ホームページ > バックエンド開発 > C++ > foreach ループをサポートする C# オブジェクト タイプとその仕組みを教えてください。

foreach ループをサポートする C# オブジェクト タイプとその仕組みを教えてください。

Susan Sarandon
リリース: 2025-01-10 10:48:40
オリジナル
627 人が閲覧しました

Which C# Object Types Support foreach Loops and How Do They Work?

C# の foreach ループ

Q: どのオブジェクト タイプが foreach ループをサポートしていますか?

答え: foreach ループの中心的な使用には、MoveNext() メソッドと Current プロパティを持つオブジェクトを返す GetEnumerator() メソッドが必要です。簡単に言えば、最も一般的な型は、IEnumerable/IEnumerable<T> を実装する型です。これには、ICollectionICollection<T>、配列などの Collection<T>/List<T> の実装が含まれます。

どのように機能しますか?

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

IEnumerator オブジェクト (tmp) は、コレクションの要素を反復処理し、反復ごとにループ変数にそれらの要素を割り当てるために使用されます。列挙子が Dispose() メソッドをサポートしている場合、using ステートメントを使用するのと同じように呼び出されます。

注: ループ変数宣言 "int i" の場所は、C# 4.0 と C# 5.0 で異なります。 C# 5.0 ではループ内で宣言されますが、C# 4.0 ではループの外で宣言されます。この区別は、ループ内のクロージャまたはラムダ式でループ変数を使用する場合に重要です。

以上がforeach ループをサポートする C# オブジェクト タイプとその仕組みを教えてください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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