不可變物件

在物件導向及函數程式語言中，不可變物件（）是一種物件，在被創造之後，它的狀態（成员变量、属性等的值）就不可以被改變。至於狀態可以被改變的物件，則被稱為可變物件（）。

不可变意味着只读不写，因此不可變物件天然地具備執行緒安全的特性，即是说如无其它特殊限制的话可以在任何线程上自由调用。此外，相較於可變物件，不可變物件在一些场合下也較合理，易於了解，而且提供較高的安全性。

小型的不可變物件可以被有效率的複製，但是較大的不可變物件，如果想要有效率的被複製，就需要更複雜的可持久化数据结构演算法。因為效能的緣故，有時候會以可變物件來加以取代不可變物件。

典型的例子例如字符串对象：C++ STL 中的 std::basic_string<T> 是可变的，即可以修改一个 std::basic_string<T> 对象所表示的字符串；而 .net 中的 System.String 是不可变的，System.Text.StringBuilder 才像 std::basic_string<T> 一样可变。

面向对象的程序设计
函數式編程