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

本文关键字:什么 显式接口实现 | 更新日期: 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)。