Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么IEnumerator需要两种当前方法<;T>;在C#中?_C#_Oop_Interface - Fatal编程技术网

为什么IEnumerator需要两种当前方法<;T>;在C#中?

为什么IEnumerator需要两种当前方法<;T>;在C#中?,c#,oop,interface,C#,Oop,Interface,我正在编写一个实现接口IEnumerator的类。要编译它,我需要以下两种方法: public object Current { get { return current; } } T IEnumerator<T>.Current { get { return current; } } 当前公共对象 { 获取{返回当前;} } 电流互感器 { 获取{返回当前;} } 为什么这两个都是必要的?从表面上看,似乎只需要后者。这是因为实现了在.NET 2.0中引入泛型之

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

public object Current
{
    get { return current; }
}

T IEnumerator<T>.Current
{
    get { return current; }
}
当前公共对象
{
获取{返回当前;}
}
电流互感器
{
获取{返回当前;}
}

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

这是因为实现了在.NET 2.0中引入泛型之前存在的接口的非泛型版本。因此,在实现一个接口时(
IEnumerator
,在您的例子中),您还需要实现该接口实现的所有其他接口。

它实现非泛型版本的一个原因是允许与未更新为采用泛型的其他类和方法向后兼容。如果不是的话,BCL的很大一部分将无法用于泛型类型。