どうも、ちょげ(@chogetarou)です。
配列のforeachループでインデックス(index)を取得する方法を紹介します。
方法

配列のforeachループでインデックス(index)を取得するには、Select()を使います。
まず、System.Linqを呼び出します。
using System.Linq;
次に、foreachの変数を「(値、インデックス)」のタプルにします。
foreachのinの後で、配列からSelect()を呼び出します。
そして、Select()の引数に、2つの引数をそのまま返すラムダ式を指定します。
foreach (var (value, index) in myArray.Select((value, index) => (value, index)))
{
/* ループ処理 */
}
上記のforeachループは、配列の要素とインデックスを一緒に取得できます。
もし、変数を1つだけにする場合は、変数のプロパティで配列の要素とインデックスを取得します。
foreach (var item in myArray.Select((value, index) => (value, index)))
{
/*
ループ処理
item.valueで配列の要素を取得
item.indexで配列のインデックスを取得
*/
}
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
string[] myArray = new string[5] { "a", "b", "c", "d", "e" };
foreach (var (value, index) in myArray.Select((value, index) => (value, index)))
{
Console.WriteLine("{0}:{1}", index, value);
}
}
}
/*
出力:
0:a
1:b
2:c
3:d
4:e
*/
コメント