C# 中有两种基本数据类型:值类型和引用类型。
值类型是直接存储它的数据内容,而引用类型存储的是对象的引用,这两种类型对变量的赋值有着不同的含义。
值类型包括:简单类型、结构类型、枚举类型;引用类型包括:Object 类型、类类型、接口、代表元、字符串类型、数组。
值类型
值类型有:byte(1)、sbyte(1)、short(2)、ushort(2)、int(4)、uint(4)、long(8)、ulong(8)、float(4)、double(8)、decimal(8)、char、bool、枚举、结构。
上述中括号中的数字表示字节数,一个字节8位,byte、ushort、uint、ulong 为无符号类型(没有负数),顺便说一下 sbyte 是有符号的字节。
数据类型 | 说明 | 取值范围 | 对应于 System 程序集中的结构 |
sbyte | 有符号8位整数 | -128-127 | SByte |
byte | 无符号8位整数 | 0-255 | Byte |
short | 有符号16位整数 | -32768-32767 | Int16 |
ushort | 无符号16位整数 | 0-65535 | UInt16 |
Int | 有符号32位整数 | -2147489648-2147483647 | Int32 |
uint | 无符号32位整数 | 0-42994967295 | UInt32 |
long | 有符号64位整数 | -2 63-2 63 | Int64 |
ulong | 无符号64位整数 | 0-2 64 | UInt64 |
float | 32位单精度实数 | 1.5*10 -45-3.4*10 38 |
double | 64位双精度实数 | 5.0*10 -324-1.7*10 308 |
demcimal | 128位十进制实数 | 1.0*10 -28-7.9*10 28 |
这些类型是.NET Framework 类型的别名的别名,具体对应关系,请参见由 String 与 string 引出的。
引用类型
引用类型有:对象类型、类类型、接口、代表元、字符串类型、数组。
虽然字符串类型(string)是引用类型,但微软为了我们设计方便,重载了其中的一些操作符,使得它应用起来就像是值类型一样。