为什么IDictionary(非泛型)没有继承IEnumerable <DictionaryEntry>?

6

IDictionary<TKey, TValue>继承自IEnumerable<KeyValuePair<TKey, TValue>>,但出于某种原因,IDictionary没有继承自IEnumerable<DictionaryEntry>。不知道为什么?每次需要对IDictionary进行查询时,我都很讨厌写这个丑陋的.OfType<DictionaryEntry>()

2个回答

4
因为IDictionary是一个较旧的(泛型之前的)接口。更改它将会破坏现有的代码。这是一种遗留问题。
因此,根本问题是为什么你仍在使用基于IDictionary的类,而你不能升级呢?

3
改变这一点将破坏接口的所有现有实现(因为它们将突然缺少接口规定必须具有的某些方法)。
此外,IDictionary仅存在于泛型之前的遗留兼容性,除非绝对必要,否则不应在新代码中使用它。如果您实际上正在使用对象类型,则可以改用IDictionary<object,object>。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接