请您解释一下参考类型与C#中Mutable概念的区别? String是引用类型但是不可变。请详细说明这两个概念之间的概念差异以及它们为什么是独立的?
答案 0 :(得分:9)
它们是正交的 -
不要求引用类型是可变的,反之亦然。 String
是一个不可变的引用类型。结构不是引用类型,可以是可变的,但最佳实践是它们是不可变的。
答案 1 :(得分:1)
引用与值类型是指复制语义。传递时的引用类型不会被复制,它的引用(“地址”)也会被复制。值类型确实完全复制。可变性与此正交。您可以拥有可变值类型和不可变引用值。
答案 2 :(得分:-1)
字符串是一种引用类型,因为它可能很大,因此不像值类型那样适合堆栈。它仍然是不可变的,因为你不改变它的值,你制作副本并更改副本的值。