【问题标题】:Why does not IDictionary (non-generic) inherit from IEnumerable<DictionaryEntry>?为什么 IDictionary(非泛型)不继承自 IEnumerable<DictionaryEntry>?
【发布时间】:2011-03-05 09:09:45
【问题描述】:

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

【问题讨论】:

    标签: .net generics ienumerable idictionary base-class-library


    【解决方案1】:

    因为IDictionary 是一个较旧的(预泛型)接口。更改它会破坏现有代码。这是一个遗产。

    所以根本问题是你为什么(仍然)使用基于 IDictionary 的类,但你不能升级吗?

    【讨论】:

      【解决方案2】:

      进行这种更改会破坏接口的所有现有实现(因为它们会突然丢失接口说它们必须具有的一些方法)。

      此外,IDictionary 仅存在于泛型之前的遗留兼容性。除非绝对必要,否则您不应该在新代码中使用它。如果您实际使用对象类型,则可以改用 IDictionary

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-11
        • 2010-09-18
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 2011-12-02
        • 2018-08-19
        • 1970-01-01
        相关资源
        最近更新 更多