(1)区别
- 值类型分配在堆栈上,引用类型是在托管堆上分配的。这里需要指出一点:如果一个引用类型中的某个属性是值类型,这个值类型的属性是分配在托管堆上的。
- 所有的值类型都是隐式密封的(sealed),例如 :你不可能继承int 来构造自己的类型。
- 值类型的每一次赋值都会执行一次逐字段的复制,所以如果是频繁赋值也会造成性能上的压力,引用类型的赋值只是指针的传递,其实也是生成新的指针实例。
- 引用类型额外有类型对象指针和同步块索引,值类型是没有的。所以我们平时使用lock 锁的对象不可能是值类型,因为值类型没有同步块索引
(2)相同点
- 值类型和引用类型都是System.Object的子类
-
值类型和引用类型都可以继承接口。(很多人都认为值类型不能继承接口)
(----以上引自http://www.cnblogs.com/zhanlang/p/9603592.html)
(3)值类型 --分为简单值类型和复合值类型
1.简单值类型:基本的int,
---本人菜鸟,只是从菜鸟的角度来理解,不涉及更深层次。
c#基础之值类型与引用类型
原文:https://www.cnblogs.com/anjingdian/p/10887086.html