不可变对象

✍ dations ◷ 2025-08-10 22:38:31 #程式设计小作品,面向对象的程序设计,函数式编程

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

相关

  • 液氮液态氮(常写为LN2)是指惰性、无色、无嗅、无腐蚀性、不可燃的氮气在温度极低的环境下而得到的液体,是氮气在低温下形成的液体形态。氮的沸点为−195.79 °C(77 K),在正常大气压下
  • 贾克·莫诺雅克·吕西安·莫诺(Jacques Lucien Monod,1910年2月9日-1976年5月31日)是一位法国生物学家,出生于巴黎,他与弗朗索瓦·雅各布共同发现了蛋白质在转录作用中所扮演的调节角色,也就
  • 急性脊髓灰质炎脊髓灰质炎(英语:poliomyelitis,简称polio),俗称小儿麻痹症(中文名称译自日语“小児麻痺”;后者则译自英语infantile paralysis),又译急性灰白髓炎。是由脊髓灰质炎病毒引起,可感染人
  • 高格纳岛高格纳岛是哥伦比亚的岛屿,位于太平洋海域,距离该国大陆28公里,由考卡省负责管辖,长9公里、宽2.5公里,面积26平方公里,最高点海拔高度338米,岛上无人居住。坐标:2°58′03″N 78°10
  • 利福勒利福勒县(英语:Le Flore County)是美国奥克拉荷马州东南部的一个县,东邻阿肯色州,面积4,165平方公里。根据2010年人口普查,本县共有人口48,109人。本县县治为波托(Poteau)。本县是史
  • 意大利入侵阿尔巴尼亚贝尼托·墨索里尼佐格一世意大利入侵阿尔巴尼亚(1939年4月7日—4月12日)是法西斯意大利对阿尔巴尼亚王国采取的一个非常简单的军事行动,该冲突是意大利独裁者贝尼托·墨索里尼
  • 瓦拉瓦拉瓦拉瓦拉(Walla Walla)美国华盛顿州瓦拉瓦拉郡最大的城市,也是该郡的郡治。2010年美国人口普查时人口为31,731人。瓦拉瓦拉位于华盛顿州的东南区,距西雅图约四小时的车程,离俄勒
  • 漠河市漠河市是黑龙江省大兴安岭地区下辖的一个县级市,是中国最北边的县级市。面积18233平方千米,人口83465人。邮政编码165300。市人民政府驻西林吉镇。市内的北红村是中国最北的村
  • 普莉西雅·安普莉西雅·安(英语:Priscilla Ahn,1984年3月9日-),是美国创作女歌手,能演奏吉他、钢琴、口琴、乌克丽丽、斑鸠琴等多种乐器。在8岁时安开始由母亲教导钢琴的演奏方法、并于当地的教
  • 春天后母心 (2005年电视剧)《春天后母心》是一部中国大陆电视剧,改编自真实的经历。 部分剧情感人,在中国大陆播演期间收视率很高。 民国时期,寡妇沈琇娥(刘雪华饰)带着儿女嫁给了张宝德。婚后育有一女,张宝