【发布时间】:2011-03-25 06:57:42
【问题描述】:
早上好,下午好,晚上好,
仍然基于我关于 .NET 中 immutable dictionaries 的问题,我提出了以下问题:如果 TKey 和 TValue 是值类型,那么您可以使字典真正不可变,因为两者都不是它的内部结构和值本身都不能改变,如果这些参数是引用类型键和值可以很容易地改变,从而改变字典本身。我说的对吗?
非常感谢。
【问题讨论】:
-
如果您正在寻找
ReadOnlyDictionary实现,请查看此处:bit.ly/ecgwhZ。 -
是的,你是对的。如果你用 C 语言编程,你就有一个 int * const ptr。你想要一个 const int * const ptr。你不能在 C# 中使用它,除非你的对象契约指定对象是不可变的。
-
引用类型也可以是不可变的,不可变不是值类型所特有的。
-
@MattDavey:是的,引用类型可以是不可变的,但它不是必需的。 Miguel 描述的问题不是不存在不可变引用类型,而是存在有可变引用类型。
-
@Miguel 顺便说一句:您现在可能已经完成了不可变字典的实现。但是您可能对我自己的不可变字典
Map<Key,Value>感兴趣,它具有一些独特的功能和算法属性,以及一个有趣的可变兄弟类型MMap<Key,Value>。
标签: c# dictionary immutability