如何为不可变的类Dictionary<TKey, TValue>
实现构造函数?
此外,是否可以允许用户使用以下语法:
ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} };
如何为不可变的类Dictionary<TKey, TValue>
实现构造函数?
此外,是否可以允许用户使用以下语法:
ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} };
最简单的解决方案是编写一个接受可变的IDictionary<TKey, TValue>
的构造函数。构建可变字典,然后将其传递给不可变字典的构造函数:
var data = new Dictionary<int, int> { {1, 2}, {2, 4}, {3,1} };
var instance = new ImmutableDic<int, int>(data);
让构造函数接受一个 IEnumerable<KeyValuePair<TKey, TValue>>
。
这样,您就可以执行以下操作:
var Instance = new ImmutableDic<int, int>(
new Dictionary<int, int> {1, 2}, {2, 4}, {3,1} });
你可以使用“new Dictionary”的“最小”添加来构建,也可以使用任何其他方便且产生可枚举序列的方式。
.Add()
方法调用,这意味着需要使用可变字典。 - BoltClock