为什么在C#中需要两个用于IEnumerator <T>的Current方法?

Ben*_*ner 2 c# oop interface

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

public object Current
{
    get { return current; }
}

T IEnumerator<T>.Current
{
    get { return current; }
}
Run Code Online (Sandbox Code Playgroud)

为什么这两个都必要?从表面上看,看起来只需要后者.

Dar*_*rov 9

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

  • 它实现非泛型版本的一个原因是允许向后兼容未更新的其他类和方法以获取泛型.如果没有,大部分BCL都不能用于泛型类型. (2认同)