不可变对象

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

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

相关

  • 粮食粮食指植物可供人类食用的部分。狭义的粮食单指谷物(cereal),即禾本科作物的种子(以及例外情形的非禾本科的荞麦种子)。广义的粮食还要包括豆科植物的种子,以及马铃薯等植物可供食
  • 俄罗斯苏维埃社会主义共和国全俄中央执行委员会全俄苏维埃代表大会(1917–1938)最高苏维埃(1938–1990)俄罗斯苏维埃联邦社会主义共和国(俄语:Российская Советская Федеративн
  • β-折叠β折叠(β-sheet),又称β片层结构(β-pleated sheet),是蛋白质的一种二级结构。在β折叠中,两条以上氨基酸链(肽链),或同一条肽链之间的不同部分形成平行或反平行排列,成为“股”。肽平
  • 第一型和第二型误差第一型及第二型错误(英语:Type I error & Type II error)或型一错误及型二错误为统计学中推论统计学的名词。在假设检验中,有一种假设称为“零假设(虚无假设)”;假设检验的目的是利
  • 球蟒球蟒(学名:Python regius)是蛇亚目蟒科蟒属下一种分布于非洲的无毒蟒蛇。成球蟒的表鳞平滑,有两片肛鳞,雄蛇的肛鳞较大。球蟒的体色以黑色为基调,背部有许多圆形斑纹。腹部呈白色
  • 入侵罗马尼亚波罗的海 – 黑海 – 北极 – (跳马 – PQ-17船团 – 仙境)1941年巴巴罗萨 – (比亚韦斯托克及明斯克 – 斯摩棱斯克 – 乌曼 – 列宁格勒 – 第一次基辅 – 塞瓦斯托波尔围
  • 太恒浩太恒浩(朝鲜语:태항호 ,英语: Tae Hang Ho ,1983年7月22日-),韩国男演员 。
  • 大黄素大黄素,学名1,3,8-三羟基-6-甲基蒽醌。以游离和苷形式存在于蓼科植物掌叶大黄、大黄、唐古特大黄的根茎及根中。橘黄色结晶。熔点256~257℃。能真空升华(1,600帕)。溶于乙醇、氢
  • 信号量信号量(英语:semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值。当线程完成一次对该semaphore对象的等待(wait)时,该计数值减一;当线程完成一次对sem
  • 花钏王花钏王(梵语:चित्रांगद,IAST:Citrāngada),《摩诃婆罗多》人物,福身王与贞信之子,象城国王。花钏为一同名乾闼婆所杀,英年早逝,未留子嗣。花钏王声名远扬,一同名乾闼婆闻名而