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

私はこの種の例を経験しました..しかし、それが実際に何であるかを理解することはできませんか?Plzヘルプ

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 に答える