【发布时间】:2015-02-23 08:53:39
【问题描述】:
.NET 4.5 引入了方便的IReadOnlyDictionary<TKey, TValue> 接口。 Dictionary<TKey, TValue> is-an IReadOnlyDictionary<TKey, TValue>,所以我可以将前者传递到需要后者的任何地方。
不过,我不确定相反的方式:如何基于现有的IReadOnlyDictionary<,> 创建一个新的Dictionary<,>?
-
Dictionary<,>有几个采用IDictionary<,>的构造函数——但没有一个采用IReadOnlyDictionary<,>的构造函数。 -
IReadOnlyDictionary<,>有一个扩展方法ToDictionary<,>()。但是,它继承自IEnumerable<>。所以要使用它,我必须像这样传递两个完全多余的代表:readOnlyDict.ToDictionary(pair => pair.Key, pair => pair.Value)。丑! - 当然,我总是可以创建一个新的
Dictionary<,>,遍历原始对并将它们复制过来。
在我看来,应该有一种简单的方法可以基于现有的IReadOnlyDictionary<,> 创建一个新的Dictionary<,>。我错过了什么吗?
编辑: 一些澄清。我不是在寻找将IReadOnlyDictionary<,> 视为Dictionary<,> 的神奇方法。我想创建一个新的Dictionary<,>,它从IReadOnlyDictionary<,> 复制其初始值。这个问题是一种冗长的提问方式:
Dictionary<,> 有一个方便的构造函数来从IDictionary<,> 复制初始值。为什么没有人采取IReadOnlyDictionary<,> 以及达到相同结果的最惯用方式是什么?
【问题讨论】:
标签: c# dictionary