值类型 引用类型
值类型和引用类型最大的区别是内存分配的差异 : Stack 栈:线程栈,由操作系统管理, 存放值类型 ,引用类型变量( 引用对象在托管堆上的地址 )。一个线程包含一个线程栈,对象作用域结束后清理,效率高。 GC Heap 托管堆: 存放引用类型 ,分配的对象由GC负责管理和释放,基于进程。 值类型一直存储在栈上吗?所有的引用类型都存储在托管堆上吗? 1.单独的值类型变量,存储在栈上面; 2.值类型作为class的某个字段,会随着引用类型存储在托管堆上,作为引用类型的一部分; 3.引用类型总是存储在托管堆上,但是引用类型变量即(引用类型对象在托管堆上的地址)是存储在栈上。 结构和类的区别 : 结构体是值类型,类是引用类型。 1.结构体不支持自定义无参构造函数,自定义构造函数只能带有参数,要保留默认无参构造函数,不支持析构函数, C#中不能有protected修饰符,不支持继承,成员变量不能定义初始值; 2.class支持抽象,struct不支持抽象; 当一个类型仅仅是原始数据的集合,而不需要复杂的操作时,就应该设计为struct,否则就应该设计为一个class 。 out和ref区别:ref需要初始化。 看到一篇文章写的巨好: https://www.cnblogs.com/anding/p/5229756.html 来源: CSDN 作者: HelloWorldTianNa 链接: