パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C# Arrayの何番目にあるか(IndexOf, LastIndexOf)



IndexOf

概要

  • 指定した要素がArray内の何番目にあるかを返す関数。
  • 調べる要素が複数含まれていたら最も先頭に近いものの番号を返す。
  • 含んでいない場合は-1を返す。



引数について

  • IndexOfは引数の数により厳密には3種類存在する(参考:Array.IndexOf メソッド (System) | Microsoft Learn)。
  • 別の関数というよりは、引数を指定するかどうかで変わると捉えた方が個人的にわかりやすい。
  • 赤字でないものは省略可能。
引数 役割など
Array array 検索したいArray
object value 検索したいキー
startIndex Arrayの何番目から検索するか。
count startIndexから合わせて何個を検索するか
配列の大きさを超えるとエラー



使用例

ソースコード

using System;

public class Sample
{
    public static void Main()
    {
        int[] a = new int[8] { 0, 1, 7, 3, 4, 5, 6, 7 };

        // 第2引数まで指定する場合
        //先頭の7なので2を返す
        Console.WriteLine($"Array.IndexOf(a, 7) = {Array.IndexOf(a, 7)}"); 
        //2は含んでいないので-1を返す
        Console.WriteLine($"Array.IndexOf(a, 2) = {Array.IndexOf(a, 2)}"); 

        // 第3引数(startIndex)まで指定する場合
        //1番目以降にある最初の7なので2を返す
        Console.WriteLine($"Array.IndexOf(a, 7, 1) = {Array.IndexOf(a, 7, 1)}"); 
        //3番目以降なので末尾の番号7を返す
        Console.WriteLine($"Array.IndexOf(a, 7, 3) = {Array.IndexOf(a, 7, 3)}"); 

        // 第4引数(count)まで指定する場合
        //1~4番目にある7なので2を返す
        Console.WriteLine($"Array.IndexOf(a, 7, 1, 4) = {Array.IndexOf(a, 7, 1, 4)}"); 
        //3~6番目に7はないので-1を返す
        Console.WriteLine($"Array.IndexOf(a, 7, 3, 4) = {Array.IndexOf(a, 7, 3, 4)}"); 
    }
}


実行結果

Array.IndexOf(a, 7) = 2
Array.IndexOf(a, 2) = -1
Array.IndexOf(a, 7, 1) = 2
Array.IndexOf(a, 7, 3) = 7
Array.IndexOf(a, 7, 1, 4) = 2
Array.IndexOf(a, 7, 3, 4) = -1





LastIndexOf

概要

  • 指定した要素がArray内の何番目にあるかを返す関数。
  • IndexOfと似ているが、 調べる要素が複数含まれていたら最も末尾に近いものの番号を返すという違いがある。


引数について

  • IndexOfと引数名は同じだが、一部挙動が違う。
  • 赤字でないものは省略可能。
引数 役割など
Array array 検索したいArray
object value 検索したいキー
startIndex Arrayの0~startIndex番目を検索するか。
count startIndexから先頭に向かってcount個を検索する



使用例

ソースコード

using System;

public class Sample
{
    public static void Main()
    {
        int[] a = new int[8] { 0, 1, 7, 3, 4, 5, 6, 7 };

        // 第2引数まで指定する場合
        //末尾の7なので2を返す
        Console.WriteLine($"Array.LastIndexOf(a, 7) = {Array.LastIndexOf(a, 7)}"); 
        //2は含んでいないので-1を返す
        Console.WriteLine($"Array.LastIndexOf(a, 2) = {Array.LastIndexOf(a, 2)}"); 

        // 第3引数(startIndex)まで指定する場合
        //3番目以前にある最初の7なので2を返す
        Console.WriteLine($"Array.LastIndexOf(a, 7, 3) = {Array.LastIndexOf(a, 7, 3)}"); 

        // 第4引数(count)まで指定する場合
        //2~4番目にある7なので2を返す
        Console.WriteLine($"Array.LastIndexOf(a, 7, 4, 3) = {Array.LastIndexOf(a, 7, 4, 3)}"); 
        //3~6番目に7はないので-1を返す
        Console.WriteLine($"Array.LastIndexOf(a, 7, 6, 4) = {Array.LastIndexOf(a, 7, 6, 4)}"); 
    }
}


実行結果

Array.LastIndexOf(a, 7) = 7
Array.LastIndexOf(a, 2) = -1
Array.LastIndexOf(a, 7, 3) = 2
Array.LastIndexOf(a, 7, 4, 3) = 2
Array.LastIndexOf(a, 7, 6, 4) = -1