1. 基元类型、引用类型和值类型
1.1. 基元类型
编译器直接支持的类型称为基元类型(primitive type)。基元类型和.NET框架类库中的类型有直接的映射关系。
1)
编译器能够在基元类型之间进行隐式或者显式的转型;
2)
基元类型能够以文本常量(literals)的形式出现;
3)
如果表达式中含有文本常量,编译器能够在编译时计算该表达式,以提高代码性能;
4)
编译器会自动解析出现在代码中的操作符;
CLR只在32位和64位值上进行算术运算。C和C++不把溢出认为是一种错误,并且允许对发生溢出的值做绕回(wrap)处理。而VB则把溢出视为一种错误。CLR提供IL指令允许编译器选择自己期望的行为。C#允许开发人员自己决定应该如何处理溢出。
1)
CLR提供一类指令,在执行运算时做溢出检查;
2)
C#编译器使用/checked+命令开关,checked和unchecked操作符,checked和unchecked语句,来执行溢出检查;
3)
checked、unchecked操作符和语句都不会影响其中调用方法的行为;
Decimal是一种非常特殊的类型,CLR没有直接操作Decimal值的IL指令。
1.2. 引用类型和值类型