[C#]配列のインデックスをループするには?

C#

どうも、ちょげ(@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))) { ループ処理 }

コメント

タイトルとURLをコピーしました