CTS (Common Type System)
.NET类型系统的基石:
-
类型继承:一个类型可以继承至另一个类型(基类),继承基类的方法、属性和其他成员;.NET内置的数值类型都继承至基类System.Object (C#的关键字:object);这样的统一类型层级结构叫做CTS(common type system)
-
CTS 中的每种类型被定义为值类型或引用类型。使用 struct 关键字定义的类型是值类型;所有内置数值类型都是 structs。使用 class 关键字定义的类型是引用类型。引用类型和值类型遵循不同的编译时规则和运行时行为。
-
CTS中值类型和引用类型的层级结
值类型
-
值类型有两类:enum和struct;
-
值类型派生自System.ValueType,System.ValueType继承自System.Object;
-
值类型是sealed,即不能被继承;
-
内置的数值类型都是struct;struct一般用来把一组相关变量聚合到一起;
public struct Point { public int x, y; public Point(int p1, int p2) { x = p1; y = p2; } }
- enum,一般用来定义一组带名字的整数:
public enum FileMode { CreateNew = 1, Create = 2, Open = 3, OpenOrCreate = 4, Truncate = 5, Append = 6, }
- 值类型变量的内存一般是分配在栈中;
引用类型
-
使用 class, delegate, array或interface定义的都是引用类型;
-
引用类型变量的内存是在托管堆中(managed heap);
-
什么引用类型变量后,变量值默认是null,知道使用new创建实例,或者赋值已经用new创建过实例的变量。