0
我在研究c#,並且我認爲可變類(例如un c#)的不同之處在於變量的定義不會改變。字符串仍然是字符串,或者可能是類型的值不能改變:string =「Hola」仍然是「Hola」。可變的可以改變。 嗯,我是對的,還是什麼是真正的差異? 謝謝不可變類和可變類之間有什麼區別?
我在研究c#,並且我認爲可變類(例如un c#)的不同之處在於變量的定義不會改變。字符串仍然是字符串,或者可能是類型的值不能改變:string =「Hola」仍然是「Hola」。可變的可以改變。 嗯,我是對的,還是什麼是真正的差異? 謝謝不可變類和可變類之間有什麼區別?
不可變對象是一個對象,它在創建後不能改變它的屬性值(實際上是它的狀態,但爲了簡化,讓我們假設不同的狀態意味着不同的屬性/變量值)。任何屬性通常都是構造函數中的賦值(它可能沒有任何屬性,只有方法)。
不可變對象可以具有可能更改值的內部變量,只要它們不會從公共/外部的角度影響該對象的狀態。
C#中的string
是不可變的...如果您嘗試將string
變量指定爲不同的值,則會創建一個新的string
。
您可以找到有關不變性更多信息,OOP的Wikipedia
PS:它是比這更復雜一點,但我不想混淆你...有不同程度的什麼可以被認爲是「不可變的」,但是如果你想進一步研究,除了維基百科的文章(沒有提到C#)外,還有this post by Eric Lippert,它解釋了不同類型的方式比我所能做的更好。