不可变对象

✍ dations ◷ 2025-11-18 14:59:24 #程式设计小作品,面向对象的程序设计,函数式编程

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

相关

  • 林地疏林是一个植被主要为树木的土地,疏林为森林的一种,和森林的不同处在于两者的树冠。在森林中,大部分的树冠都是相连的。因此,阳光不能轻易的到达地面;疏林则容许阳光透入地面,但仍
  • 门冬酰胺天冬酰胺(英语:Asparagine,简称为Asn或N;而Asp或D代表天冬氨酸)。它是20种最常见的氨基酸之一,但不是必需氨基酸,合成的密码子是AAU和AAC,可用于制作代糖。加热到足够高的温度时,天冬
  • 角直径角直径是以角度做测量单位时,从一个特定的位置上观察一个物体所得到的“视直径”。视直径只是被观测的物体在垂直观测者视线方向中心的平面上产生的透视投影的直径。由于它是
  • 女性政府首脑这是关于女性担任选举或者任命的政府首脑的列表。关于总统制国家兼任国家元首的政府首脑,参见选举或任命的女性国家元首列表。
  • 宋尔卫宋尔卫(1970年4月-),广东鹤山人,汉族,中国乳腺外科专家,中国科学院生命科学和医学学部院士,中山大学孙逸仙纪念医院院长、中山大学中山医学院院长。其同时为九三学社社员和第十三届
  • 大根兰大根兰(学名:Cymbidium macrorhizon)为兰科兰属下的一个种,腐生。
  • 小包脚菇属小包脚菇属(学名:Volvariella)是光柄菇科的一个属,其下有约50种物种,多生长于草原、树林的土壤中,有至少一种物种(立起小包脚菇(英语:Volvariella surrecta))寄生于其他蕈类。本属物种
  • 红花烟草红花烟草(学名:;英语:red tobacco)是茄科烟草属的一个种,原产巴西南部。红花烟草是花烟草(学名: ×)的亲本之一。
  • 大国的兴衰《大国的兴衰:1500年到2000年的经济变迁和军事冲突》(英语:),是英国历史学家保罗·肯尼迪1987年首次出版的书,探讨了1500年到1980年间大国兴衰的政治和经济等方面,并预测了中国、日
  • 海地华人海地华人,是指移民到海地的华人或祖先是华人的海地人。人口大约230人。华人最早是在1890年代来到海地,主要在海地政府和公司工作。另一批华人是在1970年代从台湾来到,并在首都