我研究了c#,我认为可变和差异之间存在差异。不可变类,(例如,un c#),变量的定义无法改变。字符串仍然是字符串,或者可能是类型的值不能改变:string =“Hola”仍然是“Hola”。而且可变的可以改变。 我是对的还是真正的不同之处? 谢谢
答案 0 :(得分:0)
不可变对象是一个在创建之后无法更改其属性值的对象(实际上是它的状态,但为了简化,让我们假设一个不同的状态意味着不同的属性/变量值)。任何属性通常都是构造函数中的赋值(它可能根本没有任何属性,只是方法)。
不可变对象可以具有可能更改值的内部变量,只要它们不会从公共/外部角度影响该对象的状态。
C#中的string
是不可变的...如果您尝试为string
变量分配不同的值,则会创建新的string
。
您可以在Wikipedia
上找到有关OOP不变性的更多信息PS :它比这更复杂,但我不想让你感到困惑......可以考虑的不同层次"不可变的",但如果你想进一步研究,除了维基百科的文章(没有提到C#),那里的this post by Eric Lippert解释了不同类型的方式比我以前更好做。