不可變物件

在物件導向及函數程式語言中 ， 不可變物件  是一種物件 ， 在被創造之後 ， 它的狀態 （ 成員變量 、 屬性等的值 ） 就不可以被改變 。 至於狀態可以被改變的物件 ， 則被稱爲可變物件  。 不可變意味着只讀不寫 ， 因此不可變物件天然地具備執行緒安全的特性 ， 即是說如無其它特殊限制的話可以在任何線程上自由調用 。 此外 ， 相較於可變物件 ， 不可變物件在一些場合下也較合理 ， 易於瞭解 ， 而且提供較高的安全性 。 小型的不可變物件可以被有效率的複製 ， 但是較大的不可變物件 ， 如果想要有效率的被複制 ， 就需要更復雜的可持久化數據結構演算法 。 因爲效能的緣故 ， 有時候會以可變物件來加以取代不可變物件 。 典型的例子例如字符串對象 ： C++ STL 中的 std:: basic_string <T> 是可變的 ， 即可以修改一個 std:: basic_string <T> 對象所表示的字符串 ； 而. net 中的 System.String 是不可變的 ， System.Text.StringBuilder 纔像 std:: basic_string <T> 一樣可變 。 Category: 面向對象的程序設計 Category: 函數式編程