我知道一些差异,
我错过了其他任何差异......如果是这样,他们是什么?
答案 0 :(得分:21)
请阅读:The stack is an implementation detail,不要再重复使用堆栈分配是区分值类型与.NET中引用类型的区别。 CLR可以选择在任何地方分配变量。
最重要的区别在于赋值语义。将值类型分配给变量(或将其作为参数传递给方法)时,将复制所有数据。分配引用类型时,仅复制引用 - 两个引用都指向内存中的同一对象实例。
答案 1 :(得分:15)
以下是一些额外的差异:
答案 2 :(得分:2)
如Aaronaught和Eric博客文章所述:
记住规则,引用类型总是进入堆,而值类型总是去声明它们的位置?如果在方法之外声明了Value Type,但在Reference Type中,它将被放置在堆上的Reference Type中。
答案 3 :(得分:0)
我认为值是隐式分配的内存,但不是引用类型,它们必须明确分配内存