C#コレクションのIEnumeratorの使用法がよくわかりません。それは何のために使用され、なぜそれが使用されるべきですか?
オンラインでhttp://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspxを調べてみまし たが、その記事はあまり意味がありません。私が尋ねる理由はUnity3dゲームエンジンにあり、yield関数と一緒に使用されます。IEnumeratorを使用する理由を理解しようとしています。
C#コレクションのIEnumeratorの使用法がよくわかりません。それは何のために使用され、なぜそれが使用されるべきですか?
オンラインでhttp://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspxを調べてみまし たが、その記事はあまり意味がありません。私が尋ねる理由はUnity3dゲームエンジンにあり、yield関数と一緒に使用されます。IEnumeratorを使用する理由を理解しようとしています。
IEnumeratorインターフェースは、クラスによって実装されると、組み込みのforeach構文を使用して反復することができます。
IEnumeratorインターフェイスで繰り返す必要のあるクラスでは、オブジェクトのループを制御するGetEnumerator関数のメソッドシグネチャを定義します。
public IEnumerator<OrderLine> GetEnumerator()
{
for (int i=0;i<maxItems;i++)
{
yield return item[i];
}
}
この例でわかるように、yieldステートメントを使用すると、列挙内での位置を失うことなく、呼び出し元に制御を戻すことができます。呼び出し元がforeachループの次の増分に到達すると、yieldステートメントの後に制御が行に戻されます。
IEnumeratorを明示的に使用することはめったにありませんが、IEnumeratorと連携する拡張メソッドはたくさんありforeach
ます。すべてのコレクションがそれを実装しており、これはIteratorパターンの例です。
これは、オブジェクトがコレクションを簡単に反復するための操作を実行できるようにする、非常に単純なインターフェイスです。これを使用して、foreach構文または類似の構文を使用してカスタムコレクションを反復処理するオブジェクトを作成できます。