考虑示例:
public class People : IEnumerable
{
private Person[] _people;
public People(Person[] pArray)
{
_people = new Person[pArray.Length];
for (int i = 0; i < pArray.Length; i++)
{
_people[i] = pArray[i];
}
}
// Explicit Interface implementation
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator) GetEnumerator();
}
// What is this? Its neither overloading nor over riding.. What else is it?
public PeopleEnum GetEnumerator()
{
return new PeopleEnum(_people);
}
}
我经历过这样的例子..但是无法弄清楚它到底是什么? Plz帮助
答案 0 :(得分:2)
它只是在类上定义一个方法。并非每个类方法都必须是接口方法的实现。
答案 1 :(得分:1)
这只是另一种类方法。
话虽如此,在实施IEnumerable
时,这不是一件非常常见的事情。在当前框架中,更好的方法是直接实施IEnumerable<Person>
,并返回IEnumerable<Person>
。
这将提供更清晰的API,因为使用将如预期的那样,并且它将适用于当前框架方法(即:所有LINQ而不使用.Cast<T>
)。