foreach
最も単純なアプローチには、手動でインクリメントされたカウンターが含まれます:
<code class="language-csharp">int index = 0; foreach (var item in myCollection) { // Use 'item' and 'index' index++; }</code>
Select
linqのメソッドは、インデックスを含む過負荷を提供します:
Select
これにより、値とそのインデックスの両方を含む匿名タイプが作成されます。
<code class="language-csharp">foreach (var item in myCollection.Select((value, index) => new { Value = value, Index = index })) { var value = item.Value; var index = item.Index; // Use 'value' and 'index' }</code>
パフォーマンスの向上とヒープの割り当ての避け(特に大規模なコレクションを使用する)の場合、
:を使用してください。
これにより、クリーンな構文のためにタプル分解が活用されています。
ValueTuple
<code class="language-csharp">foreach (var (value, index) in myCollection.Select((value, index) => (value, index))) { // Access 'value' and 'index' directly }</code>
インデックスアクセスを必要とする状況の場合、標準
ループはより直接的なソリューションを提供します:
このアプローチは、ループのロジックにとってインデックスが重要な場合に一般的に好まれます。 コーディングスタイルとパフォーマンスのニーズに最適な方法を選択してください。 単純なケースでは、手動カウンターで十分です。 大規模なコレクションまたはより複雑なシナリオの場合、Linq withループは実行可能なオプションのままです。
以上がC#foreachループの反復インデックスにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。