除了显式接口实现之外还有什么
本文关键字:什么 显式接口实现 | 更新日期: 2023-09-27 17:56:17
考虑以下示例:
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);
}
}
我经历过这种例子......但无法弄清楚它到底是什么?请帮忙
它只是在类上定义一个方法。并非每个类方法都必须是接口方法的实现。
这只是另一种类方法。
话虽如此,这在实施IEnumerable
时并不是一件很常见的事情。 在当前的框架中,更好的方法是直接实现IEnumerable<Person>
,并返回IEnumerable<Person>
。
这将提供一个更干净的API,因为用法将符合预期,并且可以与当前的框架方法一起使用(即:不使用.Cast<T>
的所有LINQ)。