ホームページ > バックエンド開発 > C++ > Foreach ループを使用して C# クラスを反復可能にするものは何ですか?

Foreach ループを使用して C# クラスを反復可能にするものは何ですか?

Patricia Arquette
リリース: 2025-01-10 08:39:43
オリジナル
822 人が閲覧しました

What Makes a C# Class Iterable Using a Foreach Loop?

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>
ログイン後にコピー

tmpMoveNext() この変数には、コレクションの走査を担当する列挙子が格納されます。各反復で、Current メソッドは列挙子を次の要素に進めますが、i 属性は現在の要素 (この例では

などのループ変数に割り当てられています) を返します。

バリエーションとリリース

IDisposable実装によっては、列挙子が using インターフェイスをサポートする場合があります。その場合、C# はループの終了時に

パターンを使用して列挙子を自動的に解放します。 C# 5.0 では、ループ変数 (int i) の宣言がループ内に移動されたことに注意することが重要です。これは、変数を匿名メソッドまたはラムダ式で使用する場合に重要です。

以上がForeach ループを使用して C# クラスを反復可能にするものは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート