编译器直接支持的数据类型称为基元类型。
下面列出C#基元类型与对应的FCL类型
C#基元类型 | FCL类型 | 符合CLS | 说明 | 范围 |
---|---|---|---|---|
sbyte | System.Sbyte | X | 有符号的8位值 | -128~127 |
byte | System.Byte | √ | 无符号的8位值 | 0~255 |
short | System.Int16 | √ | 有符号的16位值 | -32768~32767 |
ushort | System.UInt16 | X | 无符号的16位值 | 0~65535 |
int | System.Int32 | √ | 有符号的32位值 | -2147483648~2147483647 |
uint | System.UInt32 | X | 无符号的32位值 | 0~4294967295 |
long | System.Int64 | √ | 有符号的64位值 | -9223372036854775808~ 9223372036854775807 |
ulong | System.UInt64 | X | 无符号的64位值 | 0~18446744073709551615 |
char | System.Char | √ | 16位Unicode字符(char不像在非托管C++中那样代表一个8位值) | '\0'~(char)0xffff |
float | System.Single | √ | IEEE32位浮点值 | -3.40282e+038f~3.40282e+038f |
double | System.Double | √ | IEEE64位浮点值 | -1.79769e+308~1.79769e+308 |
bool | System.Boolean | √ | true/false值 | true/false |
decimal | System.Decimal | √ | 128位高精度浮点值,常用于不容许舍入误差的金融计算。128位中,1位是符号,96位是值本身(N),8位是比例因子(k)。decimal实际值是±NX10e+k,其中-28<=k<=0。其余位没有使用 | -79228162514264337593543950335m~ 79228162514264337593543950335m |
string | System.String | √ | 字符数组 | |
object | System.Object | √ | 所有类型的基类型 | |
dynamic | System.Object | √ | 对于CLR,dynamic和object完全一致。但C#编译器允许使用简单的语法让dynamic变量参与动态调度 |