fbpx
维基百科

不可變物件

物件導向函數程式語言中,不可變物件(英語:Immutable object)是一種物件,在被創造之後,它的狀態(成员变量、属性等的值)就不可以被改變。至於狀態可以被改變的物件,則被稱為可變物件(mutable object)。

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

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

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

不可變物件, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2012年4月29日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 此條目可参照英語維基百科相應條目来扩充, 2021年1月18日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2012年4月29日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 此條目可参照英語維基百科相應條目来扩充 2021年1月18日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 在物件導向及函數程式語言中 不可變物件 英語 Immutable object 是一種物件 在被創造之後 它的狀態 成员变量 属性等的值 就不可以被改變 至於狀態可以被改變的物件 則被稱為可變物件 mutable object 不可变意味着只读不写 因此不可變物件天然地具備執行緒安全的特性 即是说如无其它特殊限制的话可以在任何线程上自由调用 此外 相較於可變物件 不可變物件在一些场合下也較合理 易於了解 而且提供較高的安全性 小型的不可變物件可以被有效率的複製 但是較大的不可變物件 如果想要有效率的被複製 就需要更複雜的可持久化数据结构演算法 因為效能的緣故 有時候會以可變物件來加以取代不可變物件 典型的例子例如字符串对象 C STL 中的 std basic string lt T gt 是可变的 即可以修改一个 std basic string lt T gt 对象所表示的字符串 而 net 中的 System String 是不可变的 System Text StringBuilder 才像 std basic string lt T gt 一样可变 这是一篇與程序设计相關的小作品 你可以通过编辑或修订扩充其内容 查论编 取自 https zh wikipedia org w index php title 不可變物件 amp oldid 63791623, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。