不可变字典
如何为不可变的 Dictionary
类实现构造函数?
另外,是否可以允许用户使用以下语法:
ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
让构造函数接受
IEnumerable>
。这样,您可以这样做:
您可以使用“new Dictionary”的“最小”添加来构造,也可以使用任何其他方便的方式并产生这样的可枚举序列。
Have the constructor accept an
IEnumerable<KeyValuePair<TKey, TValue>>
.This way, you can do:
You can construct with the "minimal" addition of "new Dictionary", and you can also use any other way that is convenient and produces such an enumerable sequence.
最简单的解决方案是编写一个接受可变
IDictionary
的构造函数。构建可变字典并将其传递给不可变字典的构造函数:正如 BoltClock 的注释中所解释的,初始化语法不能与不可变字典一起使用,因为它需要一个
Add
方法。The simplest solution is to write a constructor that accepts a mutable
IDictionary<TKey, TValue>
. Build the mutable dictionary and just pass it to the constructor of your immutable dictionary:As explained in BoltClock's comment, the initializer syntax can't be used with an immutable dictionary, since it requires an
Add
method.