C#参考类型和“可变”概念之间的区别?

时间:2014-01-15 21:04:05

标签: c#

请您解释一下参考类型与C#中Mutable概念的区别? String是引用类型但是不可变。请详细说明这两个概念之间的概念差异以及它们为什么是独立的?

3 个答案:

答案 0 :(得分:9)

它们是正交的 -

  • Mutable =属性可以改变;
  • 引用类型=值实际上是对实例的引用。

不要求引用类型是可变的,反之亦然。 String是一个不可变的引用类型。结构不是引用类型,可以是可变的,但最佳实践是它们是不可变的。

答案 1 :(得分:1)

引用与值类型是指复制语义。传递时的引用类型不会被复制,它的引用(“地址”)也会被复制。值类型确实完全复制。可变性与此正交。您可以拥有可变值类型和不可变引用值。

答案 2 :(得分:-1)

字符串是一种引用类型,因为它可能很大,因此不像值类型那样适合堆栈。它仍然是不可变的,因为你不改变它的值,你制作副本并更改副本的值。