英語で読む

次の方法で共有


Array.FindLastIndex メソッド

定義

指定された述語によって定義された条件と一致する要素を、Array またはその一部分を対象に検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

オーバーロード

FindLastIndex<T>(T[], Predicate<T>)

Array 全体から、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

FindLastIndex<T>(T[], Int32, Predicate<T>)

Array のうち、先頭の要素から指定したインデックスまでの範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)

Array のうち、指定したインデックスで終わり、指定した要素数が含まれる範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

次のコード例では、ジェネリック メソッドの FindLastIndex 3 つのオーバーロードすべてを示します。 8 個の恐竜名を含む文字列の配列が作成され、そのうちの 2 つ (位置 1 と 5) は "saurus" で終わります。 また、このコード例では、 という名前 EndsWithSaurusの検索述語メソッドも定義されています。このメソッドは、文字列パラメーターを受け取り、入力文字列が "saurus" で終わるかどうかを示すブール値を返します。

メソッドオーバーロードは FindLastIndex<T>(T[], Predicate<T>) 、配列を末尾から後方に走査し、各要素をメソッドに順番に EndsWithSaurus 渡します。 メソッドが 5 桁目の EndsWithSaurus 要素を true 返すと、検索は停止します。

注意

C#、F#、Visual Basic では、デリゲート (Predicate(Of String)Visual Basic では) をPredicate<string>明示的に作成する必要はありません。 これらの言語は、コンテキストから正しいデリゲートを推論し、自動的に作成します。

メソッド オーバーロードは FindLastIndex<T>(T[], Int32, Predicate<T>) 、位置 4 から始まり、配列の先頭まで後方に続く配列を検索するために使用されます。 位置 1 で 要素を検索します。 最後に、メソッド オーバーロードを FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) 使用して、位置 4 から始まり、後方に動作する 3 つの要素の範囲 (つまり、要素 4、3、2) を検索します。 その範囲に "サウルス" で終わる恐竜の名前がないため、-1 が返されます。

using System;

public class Example
{
    public static void Main()
    {
        string[] dinosaurs = { "Compsognathus",
            "Amargasaurus",   "Oviraptor",      "Velociraptor",
            "Deinonychus",    "Dilophosaurus",  "Gallimimus",
            "Triceratops" };

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\nArray.FindLastIndex(dinosaurs, EndsWithSaurus): {0}",
            Array.FindLastIndex(dinosaurs, EndsWithSaurus));

        Console.WriteLine(
            "\nArray.FindLastIndex(dinosaurs, 4, EndsWithSaurus): {0}",
            Array.FindLastIndex(dinosaurs, 4, EndsWithSaurus));

        Console.WriteLine(
            "\nArray.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
            Array.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array.FindLastIndex(dinosaurs, EndsWithSaurus): 5

Array.FindLastIndex(dinosaurs, 4, EndsWithSaurus): 1

Array.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): -1
 */

FindLastIndex<T>(T[], Predicate<T>)

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

Array 全体から、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

public static int FindLastIndex<T> (T[] array, Predicate<T> match);

型パラメーター

T

配列要素の型。

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

または

matchnullです。

注釈

Arrayは、最後の要素から始まり、最初の要素で終わる後方に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返す true メソッドへのデリゲートです。 の array 要素は、 に個別に Predicate<T>渡されます。

このメソッドは O(n) 操作です。ここで nLength は の arrayです。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

FindLastIndex<T>(T[], Int32, Predicate<T>)

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

Array のうち、先頭の要素から指定したインデックスまでの範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

public static int FindLastIndex<T> (T[] array, int startIndex, Predicate<T> match);

型パラメーター

T

配列要素の型。

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。

startIndex
Int32

後方検索の開始位置を示す 0 から始まるインデックス。

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

または

matchnullです。

startIndexarray の有効なインデックスの範囲外です。

注釈

Array 、最初の要素から startIndex 始まり、最初の要素で終わる後方に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返す true メソッドへのデリゲートです。 の array 要素は、 に個別に Predicate<T>渡されます。

このメソッドは O(n) 操作です。ここでn、 は の先頭から までのstartIndex要素のarray数です。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

Array のうち、指定したインデックスで終わり、指定した要素数が含まれる範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。

public static int FindLastIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);

型パラメーター

T

配列要素の型。

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。

startIndex
Int32

後方検索の開始位置を示す 0 から始まるインデックス。

count
Int32

検索対象の範囲内にある要素の数。

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

または

matchnullです。

startIndexarray の有効なインデックスの範囲外です。

または

count が 0 未満です。

または

startIndex および countarray 内の有効なセクションを指定していません。

注釈

Arrayが 0 より大きい場合countは、 からstartIndex始まり、マイナス count 1 でstartIndex終わる後方に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返す true メソッドへのデリゲートです。 の array 要素は、 に個別に Predicate<T>渡されます。

このメソッドは O(n) 操作です。ncount です。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0