不可变对象

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

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

相关

  • 绿色建筑可持续发展主题可再生能源主题环境主题绿色建筑或绿建筑(英语:Green Building),是指本身及其使用过程在生命周期中,如选址、设计、建设、营运、维护、翻新、拆除等各阶段皆达成环
  • PCRPCR可能指:政党:其他:
  • 骸骨骷髅或者髑髅、骸骨是已死的动物或人腐化或被吃剩的骨头,经常是死的象征,常被化身为死神或鬼的形像,也被当作材料,制成骨器。骨头常是坚硬的象征,也是人有气节的具体拟物化即“骨
  • F10-F19ICD-10 第五章:精神和行为障碍(英语:ICD-10 Chapter V: Mental and behavioural disorders#(F10–F19) Mental and behavioural disorders),为世界卫生组织发布的、ICD-10规定的
  • 海地帝国海地帝国,是海地在1804年脱离法国而独立建国、让-雅克·德萨林于同年9月22日称帝以后,所短暂建立的一个君主制国家。其君主由选举方式产生。让-雅克·德萨林自称皇帝雅克一世,1
  • 物理化学物理化学(英语:Physical Chemistry),简称理化,是一门从物理学角度分析物质体系化学行为的原理、规律和方法的学科,可谓近代化学的原理根基。物理化学家关注于分子如何形成结构、动
  • 詹姆斯·洛夫洛克詹姆斯·艾夫莱姆·洛夫洛克,CH,CBE,FRS(James Ephraim Lovelock,1919年7月26日-)是一位英国独立的科学家,环保主义者和未来学家,住在英格兰德文郡。他最出名的是提出盖娅假说,假定生
  • 安意如安意如(1984年6月20日-),本名张莉,女,安徽宣城人,中国当代作家,现居北京。因创作诗词评赏“漫漫古典情”系列成名。作品以中国古典诗词鉴赏以及爱情故事为主。生于安徽宣城的一个工
  • 德国学德国学(German studies),也称为德国研究,是指以德国为研究对象的学科,研究内容包括了德国文化、德国历史和德国政治等领域。现在德国学通常包括德国语言学和德国文学研究两个领域
  • 旋涡星系旋涡星系是星系的类型之一,但哈伯在1936年最初的描述是,并且列在哈伯序列,成为其中的一部分。多数的旋涡星系包含恒星的平坦、旋转盘面,气体和尘埃,和中央聚集高浓度恒星,称为核球