在物件導向及函數程式語言中,不可變物件(英語:Immutable object)是一種物件,在被創造之後,它的狀態(成員變數、屬性等的值)就不可以被改變。至於狀態可以被改變的物件,則被稱為可變物件(mutable object)。
不可變意味着唯讀不寫,因此不可變物件天然地具備線程安全的特性,即是說如無其它特殊限制的話可以在任何線程上自由呼叫。此外,相較於可變物件,不可變物件在一些場合下也較合理,易於了解,而且提供較高的安全性。
小型的不可變物件可以被有效率的複製,但是較大的不可變物件,如果想要有效率的被複製,就需要更複雜的可持久化數據結構演算法。因為效能的緣故,有時候會以可變物件來加以取代不可變物件。
典型的例子例如字串對象:C++ STL 中的 std::basic_string<T> 是可變的,即可以修改一個 std::basic_string<T> 對象所表示的字串;而 .net 中的 System.String 是不可變的,System.Text.StringBuilder 才像 std::basic_string<T> 一樣可變。
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.