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

时间:2015-01-08 15:44:17

标签: class

我研究了c#,我认为可变和差异之间存在差异。不可变类,(例如,un c#),变量的定义无法改变。字符串仍然是字符串,或者可能是类型的值不能改变:string =“Hola”仍然是“Hola”。而且可变的可以改变。 我是对的还是真正的不同之处? 谢谢

1 个答案:

答案 0 :(得分:0)

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

不可变对象可以具有可能更改值的内部变量,只要它们不会从公共/外部角度影响该对象的状态。

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

您可以在Wikipedia

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

PS :它比这更复杂,但我不想让你感到困惑......可以考虑的不同层次"不可变的",但如果你想进一步研究,除了维基百科的文章(没有提到C#),那里的this post by Eric Lippert解释了不同类型的方式比我以前更好做。