不可变类和可变类之间有什么区别?

What are the differences betwen immutable and mutable classes?

我正在研究 c#,我认为可变和不可变 class 之间的区别(例如 un c#)是变量的定义不能改变。字符串仍然是字符串,或者可能是类型的值无法更改:string = "Hola" still "Hola"。可变的可以改变。 好吧,我是对的,或者真正的区别是什么? 谢谢

不可变对象是在创建后无法更改其 属性 值的对象(实际上是其状态,但为简化起见,我们假设不同的状态意味着不同的 property/variable 值).任何属性通常都是构造函数中的赋值(它可能根本没有任何属性,只有方法)。

不可变对象可以具有可能更改值的内部变量,只要它们从 public/external 的角度来看不影响该对象的状态。

C# 中的 string 是不可变的...如果您尝试为 string 变量分配不同的值,则会创建一个新的 string

您可以在 Wikipedia

上找到有关 OOP 中不变性的更多信息

PS:比这个稍微复杂一点,不过不想把你搞糊涂了。。。可以考虑的东西有不同的层次"immutable",但如果您想进一步研究,除了维基百科文章(未提及 C#)之外,还有 this post by Eric Lippert 比我以往任何时候都更好地解释了不同的类型。