IEnumerable<T>
我经常需要在我的代码中实现一些接口。
每次自动实施时,我都会遇到以下情况:
public IEnumerator<T> GetEnumerator() {
// Code here...
}
public IEnumerator GetEnumerator1() {
// Code here...
}
尽管我必须实现这两个GetEnumerator()方法,但它们不可能具有相同的名称,即使我们知道它们以某种方式执行相同的操作。编译器不能将它们视为另一个的重载,因为只有返回类型不同。
这样做时,我设法将GetEnumerator1()
访问器设置为private
. 这样,编译器就不会抱怨没有实现接口成员,我只是NotImplementedException
在方法的主体中抛出一个。
但是,我想知道这是否是一种好习惯,或者我是否应该以不同的方式进行,可能是方法别名或类似的东西。
在实现这样的接口时,最好的方法是什么
IEnumerable<T>
,需要实现两个具有相同名称的不同方法?
编辑#1
VB.NET 在实现接口时与 C# 的反应是否不同,因为在 VB.NET 中它是显式实现的,因此强制
GetEnumerator1()
. 这是代码:
Public Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of T) Implements System.Collections.Generic.IEnumerable(Of T).GetEnumerator
// Code here...
End Function
Public Function GetEnumerator1() As System.Collections.Generic.IEnumerator Implements System.Collections.Generic.IEnumerable.GetEnumerator
// Code here...
End Function
这两种GetEnumerator()
方法都是显式实现的,编译将拒绝它们具有相同的名称。为什么?