C# の foreach ループについての深い理解
C# の foreach
ループは、開発者がコレクションの要素を簡単かつ効率的に反復できるようにする強力な言語構造です。しかし、foreach
ループを使用するには、クラスが正確に何を満たしている必要があるのでしょうか?
反復可能クラス
IEnumerable
インターフェースを実装するクラスは、foreach
ループを使用して反復できます。技術的には、クラスは MoveNext()
メソッドと Current
プロパティを持つオブジェクトを返す GetEnumerator()
メソッドを提供するだけで済みますが、この機能を提供するには IEnumerable
を実装するのが最も一般的な方法です。
一般的なコレクション タイプ
Collection<T>
、List<T>
、配列 (T[]) などの ICollection
標準コレクション型はすべて IEnumerable
または foreach
インターフェイスを実装しており、
foreach ループの仕組み
foreach (int i in obj)
foreach
に似た
<code class="language-csharp">var tmp = obj.GetEnumerator(); int i; // C# 4.0 之前 while (tmp.MoveNext()) { int i; // C# 5.0 及以后 i = tmp.Current; // 你的代码 }</code>
tmp
MoveNext()
この変数には、コレクションの走査を担当する列挙子が格納されます。各反復で、Current
メソッドは列挙子を次の要素に進めますが、i
属性は現在の要素 (この例では
バリエーションとリリース
IDisposable
実装によっては、列挙子が using
インターフェイスをサポートする場合があります。その場合、C# はループの終了時に
以上がForeach ループを使用して C# クラスを反復可能にするものは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。