C#中的数据类型有两种,分别是值类型和引用类型,二者的差异在于数据的存储方式,值类型直接存储数据;而引用类型则存储实际数据的引用,程序通过此引用找到真正的数据,因此引用类型的变量通常也叫做对象。对于值类型,由于每个变量都有自己的值,所以对一个变量的操作不会影响另一个变量;而对于引用类型来说,两个或多个引用类型的变量引用同一个对象,实际上是指这些变量在堆栈中保存的堆地址相同,因此对一个变量的操作会影响到引用相同对象的另一个变量。
技巧:值类型变量声明初始化后即可访问,引用类型变量必须先使用new关键字为其声明的变量分配内存后方可访问。
引用类型存储在堆上,包含一个指向实例的指针,默认值为null;值类型存储在堆上,存储的是一个实际的值。未赋值前不同值类型有不同的默认值但不能为空。