IEnumerable と IEnumerator についての深い理解: .NET イテレーターの中心的なメカニズム
.NET プログラミングでは、IEnumerable インターフェイスの実装が foreach ループを有効にする鍵となります。 foreach 構文は簡潔で使いやすいですが、その基礎となる依存関係は IEnumerable インターフェイスと IEnumerator インターフェイスにあります。
IEnumerable と IEnumerator のアプリケーション シナリオ
IEnumerable は foreach を「置き換える」ためには使用されません。逆に、IEnumerable の実装は foreach を使用するための前提条件です。 foreach ループを作成すると、コンパイラは実際にそれを IEnumerator の MoveNext メソッドと Current メソッドへの一連の呼び出しに変換します。
IEnumerable と IEnumerator の違い
IEnumerable と IEnumerator が必要なのはなぜですか?
は IEnumerable
を実装しますクラスを反復可能にするには、IEnumerable インターフェイスを実装する必要があります。これには、IEnumerator を返す GetEnumerator メソッドの実装が必要です。
例
IEnumerable インターフェイスを実装する次のカスタム オブジェクト クラスについて考えてみましょう:
<code class="language-csharp">public class CustomCollection : IEnumerable<int> { private int[] data; public IEnumerator<int> GetEnumerator() { return new CustomEnumerator(data); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } private class CustomEnumerator : IEnumerator<int> { // MoveNext 和 Current 方法用于遍历 data } }</code>
IEnumerable を実装し、カスタム列挙子を提供することにより、foreach ループを使用して CustomCollection のインスタンスを反復処理できるようになりました。
以上がC# の IEnumerable と IEnumerator: foreach ループとカスタム イテレータを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。