1. ホーム
  2. c#

[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?

2022-03-19 19:06:40

質問

C#でforeachループの現在の反復を表す値を取得するために、私が遭遇していない(最近学んだいくつかのように、いくつかはStack Overflowで)いくつかの珍しい言語構成がありますか?

例えば、私は現在、状況に応じて以下のようなことをしています。

int i = 0;
foreach (Object o in collection)
{
    // ...
    i++;
}

解決方法は?

その foreach を実装したコレクションを反復処理するためのものです。 IEnumerable . これを行うには GetEnumerator を返し、そのコレクションに Enumerator .

このEnumeratorは、メソッドとプロパティを持ちます。

  • MoveNext()
  • Current

Current Enumeratorが現在乗っているオブジェクトを返します。 MoveNext 更新 Current を次のオブジェクトに変換します。

インデックスの概念は列挙の概念とは異質であり、できない。

そのため、ほとんどのコレクションは、インデクサとforループ構造を使ってトラバースすることができます。

私は、ローカル変数でインデックスを追跡するよりも、このような状況でforループを使用することを非常に好んでいます。