MRが楽しい

MRやVRについて学習したことを書き残す

foreachで要素とインデックスを取得する

本日はC#の小ネタ枠です。
foreachで要素とインデックスを取得する方法です。

foreachで要素とインデックスを取得する

Enumerable.Select メソッドを利用することでforeachで要素とインデックスを同時に取得することができます。

foreach (var (value, index) in list.Select((value, index) => (value, index)))
{
    // 処理
}

Selectはシーケンスの各要素を指定したフォームに変更します。
また各要素のインデックスを取得してフォームに組み込むことができます。
learn.microsoft.com

サンプルスクリプト

用意したリストの要素とインデックスを全てログ出力する以下のサンプルスクリプトを作成しました。
・ForeachTest.cs

using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class ForeachTest : MonoBehaviour
{
    [ContextMenu("ForeachIndexTest")]
    public void ForeachIndexTest()
    {
        var list = new List<string> { "Alpha", "Beta", "Gamma", "Delta", "Epsilon" };
        
        // foreachで要素とインデックスを取得する
        foreach (var (value, index) in list.Select((value, index) => (value, index)))
        {
            Debug.Log($"Index: {index}, Value: {value}");
        }
    }
}

以下のログが出力されます。

Index: 0, Value: Alpha
Index: 1, Value: Beta
Index: 2, Value: Gamma
Index: 3, Value: Delta
Index: 4, Value: Epsilon