【问题标题】:Why do you need two Current methods for IEnumerator<T> in C#?为什么 C# 中的 IEnumerator<T> 需要两个 Current 方法?
【发布时间】:2012-09-17 06:14:10
【问题描述】:

我正在编写一个实现接口 IEnumerator 的类。为了让它编译,我需要以下两种方法:

public object Current
{
    get { return current; }
}

T IEnumerator<T>.Current
{
    get { return current; }
}

为什么这两个都是必要的?从表面上看,似乎只需要后者。

【问题讨论】:

    标签: c# oop interface


    【解决方案1】:

    这是因为IEnumerator&lt;T&gt; 实现了IEnumerator 接口,这是在.NET 2.0 中引入泛型之前存在的接口的非泛型版本。因此,在实现接口时(在您的情况下为IEnumerator&lt;T&gt;),您还需要实现该接口实现的所有其他接口。

    【讨论】:

    • 它实现非泛型版本的一个原因是允许与未更新为采用泛型的其他类和方法向后兼容。如果不是这样,大部分 BCL 将无法用于泛型类型。
    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    相关资源
    最近更新 更多