Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • C# - 入门
  • C# - 版本历史
  • C# - 第一个程序
  • C# - 关键词
  • C# - 类和对象
  • C# - 命名空间
  • C# - 变量
  • C# - 隐式类型变量
  • C# - 数据类型
  • 数字
  • 字符串
  • DateTime
  • 结构体
  • 枚举
  • StringBuilder
  • 匿名类型
  • 动态类型
  • 可空类型
  • C# - 值类型和引用类型
  • C# - 接口
  • C# - 运算符
  • C# - if else 语句
  • C# - 三元运算符 ?
  • C# - Switch 语句
  • C# - For 循环
  • C# - While 循环
  • C# - Do-while 循环
  • C# - 分部类
  • C# - Static 关键字
  • C# - 数组
  • 多维数组
  • 交错数组
  • C# - 索引器
  • C# - 泛型
  • 泛型约束
  • C# - 集合
  • ArrayList
  • List
  • SortedList
  • Dictionary
  • Hashtable
  • Stack
  • Queue
  • C# - 元组 (Tuple)
  • C# - 值元组 (ValueTuple)
  • C# - 内置异常
  • 异常处理
  • throw 关键字
  • 自定义异常
  • C# - 委托
  • Func 委托
  • Action 委托
  • Predicate 委托
  • 匿名方法
  • C# - 事件
  • C# - 协变
  • C# - 扩展方法
  • C# - 流 I/O
  • C# - File 类
  • C# - FileInfo 类
  • C# - 对象初始化器
  • OOP - 概述
  • 面向对象编程
  • 抽象
  • 封装
  • 关联与组合
  • 继承
  • 多态
  • 方法重写
  • 方法隐藏
  • C# - SOLID 原则
  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 设计模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并

C# - 数据类型

C# 是一种强类型语言。这意味着我们必须声明变量的类型,以指示它将存储的值的种类,例如整数、浮点数、十进制数、文本等。

以下声明并初始化了不同数据类型的变量。

示例:不同数据类型的变量
string stringVar = "Hello World!!";
int intVar = 100;
float floatVar = 10.2f;
char charVar = 'A';
bool boolVar = true;

C# 主要将数据类型分为两类:值类型和引用类型。值类型包括简单类型(如 int、float、bool 和 char)、枚举类型、结构类型和可空值类型。引用类型包括类类型、接口类型、委托类型和数组类型。有关值类型和引用类型的详细信息,请参阅下一章。

C# Data Types

C# 中预定义的数据类型

C# 包含一些预定义的值类型和引用类型。下表列出了预定义的数据类型。

类型描述范围后缀
byte8 位无符号整数0 到 255
sbyte8 位有符号整数-128 到 127
short16 位有符号整数-32,768 到 32,767
ushort16 位无符号整数0 到 65,535
int32 位有符号整数-2,147,483,648
到
2,147,483,647
uint32 位无符号整数0 到 4,294,967,295u
long64 位有符号整数-9,223,372,036,854,775,808
到
9,223,372,036,854,775,807
l
ulong64 位无符号整数0 到 18,446,744,073,709,551,615ul
float32 位单精度浮点类型-3.402823e38 到 3.402823e38f
double64 位双精度浮点类型-1.79769313486232e308 到 1.79769313486232e308d
decimal用于财务和货币计算的 128 位十进制类型(+ 或 -)1.0 x 10e-28
到
7.9 x 10e28
m
char16 位单个 Unicode 字符任何有效字符,例如 a,*, \x0058 (十六进制), 或 \u0058 (Unicode)
bool8 位逻辑真/假值True 或 False
object所有其他类型的基类型。
stringUnicode 字符序列
DateTime表示日期和时间0:00:00am 1/1/01
到
11:59:59pm 12/31/9999

如上表所示,每个数据类型(字符串和对象除外)都包含值范围。如果值超出数据类型允许的范围,编译器将报错。例如,int 数据类型的范围是 -2,147,483,648 到 2,147,483,647。因此,如果您分配一个不在该范围内的值,编译器将报错。

编译时错误
// compile time error: Cannot implicitly convert type 'long' to 'int'.
int i = 21474836470;

无符号整数、long、float、double 和 decimal 类型的值必须分别以 u、l、f、d 和 m 为后缀。

示例:值后缀
uint ui = 100u;
float fl = 10.2f;
long l = 45755452222222l;
ulong ul = 45755452222222ul;
double d = 11452222.555d;
decimal mon = 1000.15m;
尝试一下

别名与 .NET 类型

预定义的数据类型是其 .NET 类型 (CLR 类名) 的别名。下表列出了预定义数据类型的别名和相关的 .NET 类名。

别名.NET 类型类型
byteSystem.Byte结构
sbyteSystem.SByte结构
intSystem.Int32结构
uintSystem.UInt32结构
shortSystem.Int16结构
ushortSystem.UInt16结构
longSystem.Int64结构
ulongSystem.UInt64结构
floatSystem.Single结构
doubleSystem.Double结构
charSystem.Char结构
boolSystem.Boolean结构
objectSystem.Object类名
stringSystem.String类名
decimalSystem.Decimal结构
DateTimeSystem.DateTime结构

这意味着无论您定义一个 int 变量还是 Int32 变量,它们都是相同的。

默认值

每种数据类型都有一个默认值。数值类型为 0,布尔类型为 false,char 的默认值为 '\0'。使用 default(typename) 分配数据类型的默认值,或者从 C# 7.1 开始,使用默认字面量。

int i = default(int); // 0
float f = default(float);// 0
decimal d = default(decimal);// 0
bool b = default(bool);// false
char c = default(char);// ''

// C# 7.1 onwards
int i = default; // 0
float f = default;// 0
decimal d = default;// 0
bool b = default;// false
char c = default;// ''

转换

C# 中某些数据类型的值会自动转换为不同的数据类型。这称为隐式转换。

示例:隐式转换
int i = 345;
float f = i;

Console.WriteLine(f); //output: 345

在上面的示例中,整数变量 i 的值被赋给浮点类型变量 f,因为此转换操作在 C# 中已预定义。

以下是隐式数据类型转换表。

隐式转换自到
sbyteshort, int, long, float, double, decimal
byteshort, ushort, int, uint, long, ulong, float, double, decimal
shortint, long, float, double, 或 decimal
ushortint, uint, long, ulong, float, double, 或 decimal
intlong, float, double, 或 decimal。
uintlong, ulong, float, double, 或 decimal
longfloat, double, 或 decimal
ulongfloat, double, 或 decimal
charushort, int, uint, long, ulong, float, double, 或 decimal
floatDouble

从 int, uint, long, 或 ulong 到 float 以及从 long 或 ulong 到 double 的转换可能会导致精度损失。没有数据类型隐式转换为 char 类型。

然而,并非所有数据类型都隐式转换为其他数据类型。例如,int 类型不能隐式转换为 uint。它必须显式指定,如下所示。

示例:显式转换
public static void Main()
{
    int i = 100;
    uint u = (uint) i;
    Console.Write(i);
}

在上面的示例中,整数 i 通过在括号中指定 uint 来显式转换为 uint。这将把整数转换为 uint。

延伸阅读
  • 在 C# 中将字符串转换为整数。
  • C# 中的装箱和拆箱。
  • 转换
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容旨在帮助所有学习者轻松快速地掌握技术。访问本平台即表示您已审阅并同意遵守我们的使用条款和隐私政策,这些条款旨在保障您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。