誰かIEnumerableとIEnumeratorについて説明してくれませんか?[closed] 質問する

誰かIEnumerableとIEnumeratorについて説明してくれませんか?[closed] 質問する

誰か私に説明しIEnumerableてくれませんか?IEnumerator

たとえば、 foreach ではなく をいつ使用すればよいのでしょうか? と の違いは何でしょうかIEnumerable?IEnumeratorなぜそれを使用する必要があるのでしょうか?

ベストアンサー1

たとえば、いつ foreach ではなくこれを使用するのでしょうか?

IEnumerable「over」は使用しませんforeach。 を実装するとIEnumerable、使用がforeach 可能になります。

次のようなコードを記述すると:

foreach (Foo bar in baz)
{
   ...
}

機能的には以下の記述と同等です:

IEnumerator bat = baz.GetEnumerator();
while (bat.MoveNext())
{
   Foo bar = (Foo)bat.Current;
   ...
}

「機能的に同等」とは、実際にコンパイラがコードを変換することを意味します。が実装されていない限り、この例ではforeachon を使用できません。baz bazIEnumerable

IEnumerablebazメソッドを実装することを意味する

IEnumerator GetEnumerator()

このメソッドが返すオブジェクトIEnumeratorは、メソッドを実装する必要があります。

bool MoveNext()

そして

Object Current()

IEnumerable最初のメソッドは、列挙子を作成したオブジェクト内の次のオブジェクトに進み、false完了した場合は戻り、2 番目のメソッドは現在のオブジェクトを返します。

.NET で反復処理できるものはすべて を実装しますIEnumerable。独自のクラスを構築していて、そのクラスが を実装するクラスからまだ継承していない場合は、を実装することによって(および新しいメソッドが返す列挙子クラスを作成することによって) IEnumerable、そのクラスをステートメントで使用できるようになります。foreachIEnumerableGetEnumerator

おすすめ記事