【C#】foreach 文でIndexを取得したい

DEVELOP

C#でforeach文を使うとシンプルな記述でループ処理出来て便利なのですが、インデックスが取得し辛い。これは Linq を使えば解決できます。

using System.Linq;
var nameArray = new string[]{ "blue", "red", "green", "yellow" };
foreach (var nameObj in nameArray.Select((v, i) => new {Value = v, Index = i }))
{
    Debug.Log ($"index={nameObj.Index} value={nameObj.Value}" );
}

この様に書けば別途変数を用意する必要はありません。ただ、ここまで書くなら Foreachを使わず素直にFor文で書いてしまう方がすっきりします。

for(int ii = 0; ii < nameArray.Count; ii++)
{
    Debug.Log ($"index={nameArray[ii].Index} value={nameArray[ii].Value} );
}

小さなコードもできるだけシンプルに分かりやすく書いていけると良いですね。

Posted by kazupon