C#——引用类型
定义为 类、委托、数组或 接口的类型是 引用类型。 在运行时,当声明引用类型的变量时,该变量会一直包含值 null,直至使用 new 运算符显式创建对象,或者为该变量分配已经在其他位置使用 new 创建的对象,如下所示:
MyClass mc = new MyClass();
MyClass mc2 = mc;
接口必须与实现它的类对象一起初始化。 如果 MyClass 实现 IMyInterface,则按以下示例所示创建 IMyInterface 的实例:
IMyInterface iface = new MyClass();
创建对象后,内存会在托管堆上进行分配,并且变量只保留对对象位置的引用。 对于托管堆上的类型,在分配内存和 CLR 自动内存管理功能(称为“垃圾回收”)回收内存时都会产生开销。 但是,垃圾回收已是高度优化,并且在大多数情况下,不会产生性能问题。
所有数组都是引用类型,即使元素是值类型,也不例外。 虽然数组隐式派生自 System.Array 类,但可以使用 C# 提供的简化语法声明和使用数组,如以下示例所示:
// Declare and initialize an array of integers.
int[] nums = { 1, 2, 3, 4, 5 };
// Access an instance property of System.Array.
int len = nums.Length;
引用类型完全支持继承。 创建类时,可以从其他任何未定义为密封的接口或类继承,而其他类可以从你的类继承并重写虚拟方法。