-1

考虑这个例子:

 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);
    }
 }

我经历过这种例子..但无法弄清楚它实际上是什么?请帮忙

4

2 回答 2

2

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

于 2013-01-28T18:26:19.607 回答
1

这只是另一个类方法。

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

这将提供一个更简洁的 API,因为它的用法与预期的一样,并且可以与当前的框架方法一起使用(即:所有 LINQ 不使用.Cast<T>)。

于 2013-01-28T18:28:41.340 回答