不可变对象

✍ dations ◷ 2025-10-25 12:04:02 #程式设计小作品,面向对象的程序设计,函数式编程

在面向对象及函数编程语言中,不可变对象(英语:Immutable object)是一种对象,在被创造之后,它的状态(成员变量、属性等的值)就不可以被改变。至于状态可以被改变的对象,则被称为可变对象(mutable object)。

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

小型的不可变对象可以被有效率的复制,但是较大的不可变对象,如果想要有效率的被复制,就需要更复杂的一致性数据结构(persistent data structure)算法。因为性能的缘故,有时候会以可变对象来加以取代不可变对象。

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

相关

  • 创世纪《创世记》(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taam
  • 超级适居行星超级适居行星(Superhabitable planet)是指比地球更适合生命起源与演化的一类假设存在的太阳系外行星或系外卫星。这项概念是在2014年由天文学家雷内·海勒(René Heller)与约翰
  • 猪急性腹泻综合征冠状病毒猪急性腹泻综合征冠状病毒(学名:Swine acute diarrhea syndrome coronavirus),简称SADS冠状病毒(SADS-CoV),又称猪肠道甲型冠状病毒(Porcine enteric alphacoronavirus),是甲型冠状病
  • 飞吻飞吻是一个意义上接近亲吻的手势或仪式。在飞吻时,嘴形闭起类似亲吻,但没有实际的碰触到别人的身体,有时也会配合手势,飞吻时先亲吻自己的手掌,再将手掌挥向对方。或是飞吻时将手
  • 雷州市雷州市(邮政式拼音:Leichow)是中国广东省湛江市下辖的一个县级市,位于广东省西南端的雷州半岛中部,两面临海。雷州市原为海康县,历史悠久,文化底蕴深厚,是广东省唯一一个县级的“国
  • 朱物华朱物华(1902年1月3日-1998年3月11日),又名佩韦,祖籍浙江绍兴,出生于江苏扬州,无线电电子学家、水声工程专家,中国科学院院士,是著名作家朱自清的胞弟。朱物华早年就读于江苏省第八中
  • 等距同构在数学中,“等距同构”或称“保距映射”(isometry、简称等距),是指在度量空间之中保持距离不变的同构关系。几何学中的对应概念是全等变换。等距同构经常用于将一个空间嵌入到另
  • 艾斯梅尔·埃巴迪艾斯梅尔·埃巴迪(波斯语:اسماعیل عبادی‎,1976年8月11日-),是一名伊朗的男子射箭运动员。他曾在2014年亚洲运动会期间收获个人复合弓金牌和团体复合弓铜牌。
  • 天择 (消歧义)天择可以指:
  • 阿尔登·埃伦瑞奇阿尔登·迦勒·埃伦瑞奇(英语:Alden Caleb Ehrenreich,1989年11月22日-) 是一位美国男演员,他出演的第一部电影是独立制片《柯波拉之家族秘辛(英语:Tetro)》,知名作品有2013年理查·拉