Fun Coding

学んだことを記録していきます!

【C#】リストのインデックスを取得する方法 まとめ

リストのインデックスを取得するメソッドは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が出力