C# の foreach コード例

Jun 24, 2017 am 10:00 AM
.net

foreach は一部のデータ型を走査できます。図からわかるように、トラバースされるデータ型にはパブリック メソッド GetEnumerator が必要です。

foreach トラバーサルを使用する場合、var 推論タイプが関係します。現時点でジェネリック バージョンが実装されていない場合は、常にオブジェクト タイプになります。

foreach トラバーサルはデータを読み取ることのみできますが、データを変更することはできません。文字列を介して検出できますが、それを構成する文字は変更できません。 (このシナリオのみ)。

foreach は、データベースを操作する DataReader の Read メソッドと同様に、前方へのみトラバースして 1 つずつ読み取ります。

上記の分析から、IEnumerator メソッドをトラバースするにはクラス内で定義する必要があることがわかります。ここには 2 つの解決策があります。

メソッド 1、yield

yield 戻り式を介して、戻り値が IEnumerable の場合、反復可能な型が自動的に生成されることを意味します。

戻り値が IEnumerator の場合、イテレータが自動的に生成されることを意味します。 IEnumerator 型はイテレータです。

これを使用して、トラバース時に上の図の person 配列の値を取得できます。

方法 2 IEnumerable インターフェイスを実装することで、

IEunmerable に GetEunmetator メソッドが含まれ、戻り値は IEnumerator の型になります。

現時点では、目的を達成するためにそのサブクラスを返すことができるように、IEnumerator インターフェイスを継承する別のクラスが必要です。

実装プロセス:

1. インデックスの位置をマークするために、int 型の変数を追加する必要があります。ここでは int Position=-1 を使用します。

2. 渡された配列を受け取るために、対応する配列変数を追加します。ここで string[] persion;

3 を使用して実装された Curren 属性は、現在のインデックスのデータを返す必要があります。 return person[position];

4. MoveNextメソッドを実装するには、ポインタ(インデックス)に1を加算して前に進む必要があります。戻り値は、インデックスが操作されたかどうかを判断するために使用されます。 。

5. リセット メソッドである Reset メソッドを実装し、位置を -1 に割り当てます。

6. 渡されたデータを受け取るコンストラクターを追加します。

3. リスト コレクションの分析

リフレクション ツールを通じて、List コレクションの Add メソッドが内部項目に値を追加することであり、この項目が配列であることがわかります。ジェネリックなのでTと表示されます。

つまり、上記の自己定義配列と同様に、追加されたデータを格納するための変数がコレクション内に存在します。このように、List コレクション クラスは上記の

カスタム クラスと一致するだけです。プロセスをデモするために、もちろんビジネス ニーズに応じて、静的データの Add メソッドへの変更、データ ロジックのフィルタリングなど、上記のクラスを自分で実装および拡張できます。これらはすべて、ビジネス ニーズに応じて拡張できます。

以上がC# の foreach コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語のnullの代替案は何ですか C言語のnullの代替案は何ですか Mar 03, 2025 pm 05:37 PM

この記事では、CのNull Poernter recerferenceの課題を調査します。問題は、問題はnullではなく、その誤用であると主張しています。 記事では、参照前のチェック、ポインターInitialiなど、非参照を防止するためのベストプラクティスの詳細

次のレベルのCコンパイラを追加する方法 次のレベルのCコンパイラを追加する方法 Mar 03, 2025 pm 05:44 PM

この記事では、printf内の\ nエスケープシーケンスを使用してcで新しいライン文字を作成し、関数を置く方法について説明します。 機能を詳しく説明し、出力のラインブレークに使用することを示すコード例を提供します。

どの言語コンパイラが優れていますか? どの言語コンパイラが優れていますか? Mar 03, 2025 pm 05:39 PM

この記事は、Cコンパイラの選択に関する初心者を案内しています。 GCCは、使いやすさ、幅広い可用性、広範なリソースが初心者に最適であるため、最適であると主張しています。 ただし、GCC、Clang、MSVC、およびTCCも比較して、その違いを強調しています

nullは、C言語での最新のプログラミングではまだ重要ですか? nullは、C言語での最新のプログラミングではまだ重要ですか? Mar 03, 2025 pm 05:35 PM

この記事では、現代のCプログラミングにおけるNullの継続的な重要性を強調しています。 進歩にもかかわらず、Nullは明示的なポインター管理にとって重要なままであり、有効なメモリアドレスがないことをマークすることにより、セグメンテーションの障害を防ぎます。 最高のPRAC

C言語コンパイラのWebバージョンは何ですか? C言語コンパイラのWebバージョンは何ですか? Mar 03, 2025 pm 05:42 PM

この記事では、初心者向けのオンラインCコンパイラをレビューし、使いやすさとデバッグ機能に焦点を当てています。 OnlineGDBとRepl.itは、ユーザーフレンドリーなインターフェイスと役立つデバッグツールのために強調表示されます。 プログラムやコンパイルなどのその他のオプション

c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 Mar 03, 2025 pm 05:41 PM

この記事では、オンラインCプログラミングプラットフォームを比較し、デバッグツール、IDE機能、標準コンプライアンス、メモリ/実行の制限などの機能の違いを強調しています。 「最良の」プラットフォームはユーザーのニーズに依存していると主張しています。

C言語コンパイラによるコードをコピーする方法 C言語コンパイラによるコードをコピーする方法 Mar 03, 2025 pm 05:43 PM

この記事では、C IDEでの効率的なコードコピーについて説明します。 コピーはコンパイラ機能ではなくIDE機能であり、IDE選択ツールの使用、コード折りたたみ、検索/交換、テンプラなど、効率を向上させるための詳細戦略であることを強調しています。

C言語コンパイラによって出力ウィンドウをポップアップしないという問題を解決する方法 C言語コンパイラによって出力ウィンドウをポップアップしないという問題を解決する方法 Mar 03, 2025 pm 05:40 PM

この記事では、Cプログラムのコンパイルでの出力Windowsの欠落をトラブルシューティングします。 実行可能ファイルの実行に失敗し、プログラムエラー、誤ったコンパイラ設定、バックグラウンドプロセス、迅速なプログラム終了などの原因を調べます。ソリューションにはchが含まれます

See all articles