概念:引用类型存储对其值的引用。部署:托管堆上部署了所有引用类型。
引用类型:基类为Objcet
引用类型: |
string 和 class统称为引用类型。 |
- 引用类型当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
- 引用类型的对象总是在进程堆中分配(动态分配)。
引用类型在栈内的空间大小相同;
1. 通用类型系统
C#中,变量是值还是引用仅取决于其数据类型。
C#的基本数据类型都以平台无关的方式来定义。C#的预定义类型并没有内置于语言中,而是内置于.NET Framework中。.NET使用通用类型系统(CTS)定义了可以在中间语言(IL)中使用的预定义数据类型,所有面向.NET的语言都最终被编译为IL,即编译为基于CTS类型的代码。
例如,在C#中声明一个int变量时,声明的实际上是CTS中System.Int32的一个实例。这具有重要的意义:
- 确保IL上的强制类型安全;
- 实现了不同.NET语言的互操作性;
- 所有的数据类型都是对象。它们可以有方法,属性,等。例如:
int i;
i = 1;
string s;
s