本日は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