除了显式接口实现之外还有什么?

时间:2013-01-28 18:24:39

标签: c#

考虑示例:

 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帮助

2 个答案:

答案 0 :(得分:2)

它只是在类上定义一个方法。并非每个类方法都必须是接口方法的实现。

答案 1 :(得分:1)

这只是另一种类方法。

话虽如此,在实施IEnumerable时,这不是一件非常常见的事情。在当前框架中,更好的方法是直接实施IEnumerable<Person>,并返回IEnumerable<Person>

这将提供更清晰的API,因为使用将如预期的那样,并且它将适用于当前框架方法(即:所有LINQ而不使用.Cast<T>)。