リストのインデックスを取得するメソッドは4つあります。
方法 | メソッド名 |
説明 |
---|---|---|
① |
FindIndex | 指定した条件に一致する要素を検索し、最も小さいインデックス番号を返す |
② |
FindLastIndex | 指定した条件に一致する要素を検索し、最も大きいインデックス番号を返す |
③ |
IndexOf | 指定したオブジェクトを検索し、最も小さいインデックス番号を返す |
④ |
LastIndexOf | 指定したオブジェクトを検索し、最も大きいインデックス番号を返す |
共通の仕様
・取得できるインデックス番号は1つ
・取得できなかった場合は-1を返す
全てのインデックスを返すメソッドは無さそうです。
FindIndex、IndexOf
先頭から検索し、最初のインデックスを返すイメージ。
FindLastIndex、LastIndexOf
末尾から検索し、最初のインデックスを返すイメージ。
例
コード
using System; using System.Collections.Generic; namespace Sample { /// <summary> /// メインプログラム /// </summary> public class Program { /// <summary> /// 方法の比較 /// </summary> static void Main() { // リストを生成 var list = new List<string>(); // リストに値を追加 list.Add("A"); // 0 list.Add("B"); // 1 list.Add("C"); // 2 list.Add("A"); // 3 list.Add("B"); // 4 list.Add("C"); // 5 // Cのインデックスを取得 int result1 = list.FindIndex(n => n == "C"); int result2 = list.FindLastIndex(n => n == "C"); int result3 = list.IndexOf("C"); int result4 = list.LastIndexOf("C"); Console.WriteLine("Cのインデックス"); Console.WriteLine("FindIndex : " + result1); Console.WriteLine("FindLastIndex : " + result2); Console.WriteLine("IndexOf : " + result3); Console.WriteLine("LastIndexOf : " + result4); Console.WriteLine(); // Dのインデックスを取得 result1 = list.FindIndex(n => n == "D"); result2 = list.FindLastIndex(n => n == "D"); result3 = list.IndexOf("D"); result4 = list.LastIndexOf("D"); Console.WriteLine("Dのインデックス"); Console.WriteLine("FindIndex : " + result1); Console.WriteLine("FindLastIndex : " + result2); Console.WriteLine("IndexOf : " + result3); Console.WriteLine("LastIndexOf : " + result4); Console.WriteLine(); } } }
出力
Cのインデックス FindIndex : 2 FindLastIndex : 5 IndexOf : 2 LastIndexOf : 5 Dのインデックス FindIndex : -1 FindLastIndex : -1 IndexOf : -1 LastIndexOf : -1
C :リストの3番目と6番目にある → 2と5が出力
D :リストにない → -1が出力