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

配列(array)のインデックス(index)をループする方法は、2つあります。
インデックスのみ
ひとつは、インデックスのみをループする方法です。
まず、for(){}を記述します。
()内に、「int i = 0; i < arr.Length; i++)」(i=ループ変数, arr=配列)を指定します。
そして、{}内にループ処理を指定します。
ループ処理では、ループ変数で配列のインデックスを取得します。
//arr=対象の配列
for (int i = 0; i < arr.Length; i++) {
//ループ変数「i」でインデックスを取得
}
上記のforループは、配列(array)のインデックスをループします。
使用例
using System;
public class Example
{
public static void Main()
{
string[] nums = new string[5] { "one", "two", "three", "four", "five" };
for (int i = 0; i < nums.Length; i++) {
Console.WriteLine($"{i}:{nums[i]}");
}
}
}
出力:
0:one
1:two
2:three
3:four
4:five
インデックスと値
もうひとつは、インデックスと値を一緒にループする方法です。
まず、System.Linqを呼び出します。
using System.Linq;
次に、foreachの変数を「(値、インデックス)」のタプルにします。
foreachのinの後で、配列からSelect()を呼び出します。
そして、Select()の引数に、2つの引数をそのまま返すラムダ式を指定します。
forachの{}内に、ループ処理を指定します。
ループ変数で、配列の値とインデックスを一緒に取得します。
//myArray=対象の配列
foreach (var (value, index) in myArray.Select((value, index) => (value, index)))
{
//ループ処理
//ループ変数「value」で値、「index」でインデックスを取得
}
上記のforeachループは、配列(array)のインデックスと値を一緒にループします。
もし、変数を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
まとめ
配列(array)のインデックス(index)をループする方法は、次の2つです。
- インデックスのみをループする方法
for (int i = 0; i < arr.Length; i++) { ループ処理 }
- インデックスと値を一緒にループする方法
foreach (var (value, index) in myArray.Select((value, index) => (value, index))) { ループ処理 }
コメント