分别为:值类型、引用类型和指针类型。
注意:指针类型仅用于非安全的代码中,还有C#语言不支持指针,故要我说只用记前面两种,指针类型有毒啊。
重点:在C#语言中,值类型变量存储的是数据类型所代表的的实际数据,值类型变量的值(或实例)存储在栈中,你如果执行了一句赋值语句那么传递的是变量的值。
引用类型的实例(注意:类就是引用类型),也就是对象,存储在可管理堆(Managed Heap)中,而引用类型变量的值存储在栈中(这个值是:引用类型对象的引用,即地址,而这个地址和指针所代表的的地址不同,引用所代表的的地址不能被修改,也不能转化为其他类型地址,它是引用型变量,只能引用指定类对象),如果你执行赋值语句,那么传递的是对象的地址。
存储在栈中的变量,当其生命结束时,自动被撤销;但在堆中的对象不能自动被撤销。
.NET系统CLR内建垃圾收集器,当对象的引用变量被撤销,表示对象的生命周期结束,垃圾收集器负责收回不被使用的对象占有的存储空间。
堆实际上是计算机系统中的空闲内存。