不可变对象

✍ dations ◷ 2025-06-29 12:06:28 #程式设计小作品,面向对象的程序设计,函数式编程

在面向对象及函数编程语言中,不可变对象(英语: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> 一样可变。

相关

  • 轻子轻子(Lepton)是一种不参与强相互作用、自旋为1/2的基本粒子。电子是最为人知的一种轻子;大部分化学领域都会涉及到与电子的相互作用,原子不能没有它,所有化学性质都直接与它有关
  • 文景之治文景之治是指中国汉朝汉文帝和汉景帝所统治的时期,是中国历史上的一个治世,奠定了其后雄才大略的汉武帝将汉朝推上顶峰的基础。汉初,社会经济薄弱,朝廷推崇黄老治术,采取“轻徭薄
  • 烟 (消歧义)煙、菸或烟可以指:
  • 贝尔赛克灭绝营纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转移营法国:居尔集中营 · 德朗西集中营意大利:波尔查诺转移营荷兰:阿默斯福特集中营 · 韦斯特博克转移营挪威:法斯塔德集中营部
  • Sb(NOsub3/sub)sub3/sub硝酸锑(III)是一种无机化合物,化学式为Sb(NO3)3。它可由电化学法得到。三氧化二锑溶于硝酸,溶液中也会产生Sb(NO3)3。硝酸锑三水合物的乙醇溶液和Schiff碱PhCH=CH-CH=N-NH-C(=
  • 一语双关双关语,又称一语双关,是一种修辞方法,存在于各种自然语言中,是把词语真正的含义模糊化。双关语在一句话中会有很多种意思,使同一个句子可以理解成两种或多种截然不同的意思。利用
  • 采石站采石站是位于安徽省马鞍山市雨山区采石唐贤街的一个铁路车站,邮政编码243041。车站建于1936年,有宁铜铁路经过该站,现不办理客货运业务。车站设有1条正线和2条到发线,站场及其上
  • 卷舌鼻音卷舌鼻音是辅音的一种,在国际音标中以表示,在X-SAMPA中以表示。当符号成对出现时,左边的是清音,右边的是浊音。阴影区域表示被认为是不可能的发音。
  • 各国兵役制度兵役是个人或群体为军队或民兵团提供的服务,这服务可以是自愿性的志愿兵或强制性的征兵。某些国家(如墨西哥)需要每位国民在无身体、心理或宗教障碍下,服一定时间兵役。一个国家
  • 原子能和替代能源委员会法国原子能和替代能源委员会(法语:Commissariat à l'énergie atomique et aux énergies alternatives,缩写:CEA)是法国政府资助的能源,国防和安全,信息技术和卫生技术领域的研究