不可变对象

✍ dations ◷ 2025-05-18 05:27:13 #程式设计小作品,面向对象的程序设计,函数式编程

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

相关

  • 科学研究科学方法(英语:scientific method)指的是检查自然现象、获取新知识或修正与整合先前已得的知识,所使用的一整套技术。为了合乎科学精神,这方法必须建立于收集可观察、可经验(empir
  • 卡洛维期卡洛夫期(英语:Callovian)是侏罗纪的第八个时期,年代大约位于166.1–163.5百万年前。
  • 黑粉菌科见内文黑粉菌科(学名:Ustilaginaceae)是属于黑粉菌纲黑粉菌目的真菌,寄生在禾本科、蓼科、莎草科等植物上,可引起植物的黑粉病。该科共有17属、607种。
  • 克莱尔学院剑桥大学克莱尔学院(Clare College, Cambridge)是剑桥大学现存学院中第二古老的学院,创建于14世纪,在学院的初期获得了爱德华一世的外孙女克莱尔·伊丽莎白( Elizabeth de Clare)
  • 克拉克山脉坐标:77°16′S 142°0′W / 77.267°S 142.000°W / -77.267; -142.000克拉克山脉(英语:Clark Mountains)是南极洲的山脉,位于玛丽伯德地,属于福特山脉的一部分,处于阿拉格尼山脉
  • 群居动物社会性动物也称为群居动物,例如人类、狗、猴子、大猩猩、蜜蜂、狮子、蚂蚁、鹦鹉。它们群族中,可能由一个到多个家庭组成。每个家庭成员各自有比较明显的地位。家猫虽然是独立
  • 质子转移反应质谱法质子转移反应质谱法(英语:Proton-transfer-reaction mass spectrometry,缩写:PTR-MS),是一种使用气相水合氢离子作为离子源试剂的分析化学方法。使用质子转移反应质谱法进行分析的
  • 洛迪洛迪(意大利语:Lodi,意大利语: 聆听,)是意大利伦巴迪的一个城市,位于意大利北部,在阿达河的右岸上,是洛迪省的首府。上古时代洛迪是凯尔特人的村落,在古罗马时代,是罗马道路横跨阿达河
  • 卡尔·弗里德里希·莫尔卡尔·弗里德里希·莫尔(Karl Friedrich Mohr,1806年11月4日-1879年9月28日),德国化学家。其最著名贡献为提出能量守恒定律的早期表述。硫酸亚铁铵(化学式(NH4)2Fe(SO4)2.6H2O)以
  • 南王部落南王部落(卑南语:Sakuban, Puyuma,即普悠玛部落)是一个位在台东县台东市南王里的台湾原住民族部落,约略范围西北至卑南山、东至台东线铁道、南至太平溪左岸堤防。该部落为卑南族