C# の foreach ループ
質問:
foreach ループの使用を許可するクラスの種類は何ですか?
答え:
技術的には、bool MoveNext() メソッドと Current プロパティを持つ型を返す GetEnumerator() という名前のパブリック メソッドを持つ任意のクラスを使用できます。ただし、最も一般的な説明には、IEnumerable または IEnumerable を実装し、IEnumerator または IEnumerator を返すクラスが関係しています。
拡張により、ICollection または ICollection を実装するクラス (例: Collection、List、Array (T[])) は、foreach ループをサポートできます。
仕組み:
foreach ループは次のように動作します:
- 指定されたオブジェクト (obj) の GetEnumerator() メソッドから一時オブジェクト (tmp) を初期化します。
- tmp.MoveNext() が true を返す限り、Current の現在値を含むループ本体 ({...} で囲まれた) が繰り返し実行されます。
バリエーション:
- tmp が IDisposable をサポートしている場合は、ループの完了時にそれを使用して tmp を破棄します。
- C# 5.0 では、i のような変数をループ内で宣言できますが、以前のバージョンではループの外で宣言する必要がありました。この区別は、ループ内の匿名メソッドまたはラムダ式で i を使用する場合に重要になります。
以上がForeach ループをサポートする C# クラスの種類は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。