Array.FindLastIndex メソッド

定義

指定された述語によって定義された条件と一致する要素を、Array またはその一部分を対象に検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by a specified predicate, and returns the zero-based index of the last occurrence within an Array or a portion of it.

オーバーロード

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

Array 全体から、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire Array.

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

Array のうち、先頭の要素から指定したインデックスまでの範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

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

Array の指定したインデックスで終わる指定した要素数の範囲内で、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

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

Array 全体から、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire Array.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, Predicate<T> match);
static member FindLastIndex : 'T[] * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), match As Predicate(Of T)) As Integer

型パラメーター

T

配列要素の型。The type of the elements of the array.

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。The one-dimensional, zero-based Array to search.

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外

arraynull です。array is null.

または-or- matchnull です。match is null.

次のコード例は、FindLastIndex ジェネリックメソッドの3つのオーバーロードすべてを示しています。The following code example demonstrates all three overloads of the FindLastIndex generic method. 文字列の配列が作成されます。これには8つの恐竜の名前が含まれ、そのうちの2つ (位置1と 5) の末尾が "saurus" になります。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". また、このコード例では、文字列パラメーターを受け取り、入力文字列が "saurus" で終わるかどうかを示すブール値を返す、EndsWithSaurusという名前の検索述語メソッドも定義します。The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

FindLastIndex<T>(T[], Predicate<T>) メソッドのオーバーロードは、配列を末尾からさかのぼって走査し、各要素を EndsWithSaurus メソッドに渡します。The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus メソッドが位置5の要素に対して true を返すと、検索は停止します。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

およびC# Visual Basic では、Predicate<string> デリゲート (Visual Basic でPredicate(Of String)) を明示的に作成する必要はありません。In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. これらの言語は、コンテキストから正しいデリゲートを推測し、自動的に作成します。These languages infer the correct delegate from context and create it automatically.

FindLastIndex<T>(T[], Int32, Predicate<T>) メソッドのオーバーロードを使用して、配列の位置が4から始まり、配列の先頭に向かって後方に向かって検索します。The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. 位置1にある要素を検索します。It finds the element at position 1. 最後に、FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) メソッドのオーバーロードを使用して、3つの要素の範囲のうち、位置4から後方に向かって (つまり、要素4、3、および 2) を検索します。Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). この範囲には、"saurus" で終わる恐竜の名前がないため、-1 が返されます。It returns -1 because there are no dinosaur names in that range that end with "saurus".

using namespace System;

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

void main()
{
    array<String^>^ dinosaurs = { "Compsognathus", 
        "Amargasaurus",   "Oviraptor",      "Velociraptor", 
        "Deinonychus",    "Dilophosaurus",  "Gallimimus", 
        "Triceratops" };

    Console::WriteLine();
    for each(String^ dinosaur in dinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindLastIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}

/* 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
 */
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
 */
Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs() As String = { "Compsognathus", _
            "Amargasaurus",   "Oviraptor",      "Velociraptor", _
            "Deinonychus",    "Dilophosaurus",  "Gallimimus", _
            "Triceratops" }

        Console.WriteLine()
        For Each dinosaur As String In dinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus))

    End Sub

    ' Search predicate returns true if a string ends in "saurus".
    Private Shared Function EndsWithSaurus(ByVal s As String) _
        As Boolean

        ' AndAlso prevents evaluation of the second Boolean
        ' expression if the string is so short that an error
        ' would occur.
        If (s.Length > 5) AndAlso _
            (s.Substring(s.Length - 6).ToLower() = "saurus") Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

' This code example produces the following output:
'
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'
'Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): 5
'
'Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): 1
'
'Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): -1

注釈

Array は、最後の要素から後方に検索され、最初の要素で終了します。The Array is searched backward starting at the last element and ending at the first element.

Predicate<T> は、渡されたオブジェクトがデリゲートで定義されている条件に一致する場合に true を返すメソッドのデリゲートです。The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. array の要素は、個別に Predicate<T>に渡されます。The elements of array are individually passed to the Predicate<T>.

このメソッドは O (n) 操作であり、narrayLength です。This method is an O(n) operation, where n is the Length of array.

こちらもご覧ください

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

Array のうち、先頭の要素から指定したインデックスまでの範囲の中で、指定した述語によって定義される条件に一致する要素を検索し、そのうち最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, int startIndex, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, int startIndex, Predicate<T> match);
static member FindLastIndex : 'T[] * int * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), startIndex As Integer, match As Predicate(Of T)) As Integer

型パラメーター

T

配列要素の型。The type of the elements of the array.

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。The one-dimensional, zero-based Array to search.

startIndex
Int32

後方検索の開始位置を示す 0 から始まるインデックス。The zero-based starting index of the backward search.

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外

arraynull です。array is null.

または-or- matchnull です。match is null.

startIndexarray の有効なインデックスの範囲外です。startIndex is outside the range of valid indexes for array.

次のコード例は、FindLastIndex ジェネリックメソッドの3つのオーバーロードすべてを示しています。The following code example demonstrates all three overloads of the FindLastIndex generic method. 文字列の配列が作成されます。これには8つの恐竜の名前が含まれ、そのうちの2つ (位置1と 5) の末尾が "saurus" になります。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". また、このコード例では、文字列パラメーターを受け取り、入力文字列が "saurus" で終わるかどうかを示すブール値を返す、EndsWithSaurusという名前の検索述語メソッドも定義します。The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

FindLastIndex<T>(T[], Predicate<T>) メソッドのオーバーロードは、配列を末尾からさかのぼって走査し、各要素を EndsWithSaurus メソッドに渡します。The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus メソッドが位置5の要素に対して true を返すと、検索は停止します。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

およびC# Visual Basic では、Predicate<string> デリゲート (Visual Basic でPredicate(Of String)) を明示的に作成する必要はありません。In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. これらの言語は、コンテキストから正しいデリゲートを推測し、自動的に作成します。These languages infer the correct delegate from context and create it automatically.

FindLastIndex<T>(T[], Int32, Predicate<T>) メソッドのオーバーロードを使用して、配列の位置が4から始まり、配列の先頭に向かって後方に向かって検索します。The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. 位置1にある要素を検索します。It finds the element at position 1. 最後に、FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) メソッドのオーバーロードを使用して、3つの要素の範囲のうち、位置4から後方に向かって (つまり、要素4、3、および 2) を検索します。Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). この範囲には、"saurus" で終わる恐竜の名前がないため、-1 が返されます。It returns -1 because there are no dinosaur names in that range that end with "saurus".

using namespace System;

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

void main()
{
    array<String^>^ dinosaurs = { "Compsognathus", 
        "Amargasaurus",   "Oviraptor",      "Velociraptor", 
        "Deinonychus",    "Dilophosaurus",  "Gallimimus", 
        "Triceratops" };

    Console::WriteLine();
    for each(String^ dinosaur in dinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindLastIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}

/* 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
 */
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
 */
Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs() As String = { "Compsognathus", _
            "Amargasaurus",   "Oviraptor",      "Velociraptor", _
            "Deinonychus",    "Dilophosaurus",  "Gallimimus", _
            "Triceratops" }

        Console.WriteLine()
        For Each dinosaur As String In dinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus))

    End Sub

    ' Search predicate returns true if a string ends in "saurus".
    Private Shared Function EndsWithSaurus(ByVal s As String) _
        As Boolean

        ' AndAlso prevents evaluation of the second Boolean
        ' expression if the string is so short that an error
        ' would occur.
        If (s.Length > 5) AndAlso _
            (s.Substring(s.Length - 6).ToLower() = "saurus") Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

' This code example produces the following output:
'
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'
'Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): 5
'
'Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): 1
'
'Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): -1

注釈

ArraystartIndex から後方に検索され、最初の要素で終了します。The Array is searched backward starting at startIndex and ending at the first element.

Predicate<T> は、渡されたオブジェクトがデリゲートで定義されている条件に一致する場合に true を返すメソッドのデリゲートです。The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. array の要素は、個別に Predicate<T>に渡されます。The elements of array are individually passed to the Predicate<T>.

このメソッドは O (n) 操作であり、narray の先頭から startIndexまでの要素の数です。This method is an O(n) operation, where n is the number of elements from the beginning of array to startIndex.

こちらもご覧ください

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

Array の指定したインデックスで終わる指定した要素数の範囲内で、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, int startIndex, int count, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);
static member FindLastIndex : 'T[] * int * int * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), startIndex As Integer, count As Integer, match As Predicate(Of T)) As Integer

型パラメーター

T

配列要素の型。The type of the elements of the array.

パラメーター

array
T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。The one-dimensional, zero-based Array to search.

startIndex
Int32

後方検索の開始位置を示す 0 から始まるインデックス。The zero-based starting index of the backward search.

count
Int32

検索対象の範囲内にある要素の数。The number of elements in the section to search.

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

戻り値

match で定義された条件と一致する要素が存在する場合、最もインデックス番号の大きい要素の 0 から始まるインデックス。それ以外の場合は -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外

arraynull です。array is null.

または-or- matchnull です。match is null.

startIndexarray の有効なインデックスの範囲外です。startIndex is outside the range of valid indexes for array.

または-or- count が 0 未満です。count is less than zero.

または-or- startIndex および countarray 内の有効なセクションを指定していません。startIndex and count do not specify a valid section in array.

次のコード例は、FindLastIndex ジェネリックメソッドの3つのオーバーロードすべてを示しています。The following code example demonstrates all three overloads of the FindLastIndex generic method. 文字列の配列が作成されます。これには8つの恐竜の名前が含まれ、そのうちの2つ (位置1と 5) の末尾が "saurus" になります。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". また、このコード例では、文字列パラメーターを受け取り、入力文字列が "saurus" で終わるかどうかを示すブール値を返す、EndsWithSaurusという名前の検索述語メソッドも定義します。The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

FindLastIndex<T>(T[], Predicate<T>) メソッドのオーバーロードは、配列を末尾からさかのぼって走査し、各要素を EndsWithSaurus メソッドに渡します。The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus メソッドが位置5の要素に対して true を返すと、検索は停止します。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

およびC# Visual Basic では、Predicate<string> デリゲート (Visual Basic でPredicate(Of String)) を明示的に作成する必要はありません。In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. これらの言語は、コンテキストから正しいデリゲートを推測し、自動的に作成します。These languages infer the correct delegate from context and create it automatically.

FindLastIndex<T>(T[], Int32, Predicate<T>) メソッドのオーバーロードを使用して、配列の位置が4から始まり、配列の先頭に向かって後方に向かって検索します。The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. 位置1にある要素を検索します。It finds the element at position 1. 最後に、FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) メソッドのオーバーロードを使用して、3つの要素の範囲のうち、位置4から後方に向かって (つまり、要素4、3、および 2) を検索します。Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). この範囲には、"saurus" で終わる恐竜の名前がないため、-1 が返されます。It returns -1 because there are no dinosaur names in that range that end with "saurus".

using namespace System;

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

void main()
{
    array<String^>^ dinosaurs = { "Compsognathus", 
        "Amargasaurus",   "Oviraptor",      "Velociraptor", 
        "Deinonychus",    "Dilophosaurus",  "Gallimimus", 
        "Triceratops" };

    Console::WriteLine();
    for each(String^ dinosaur in dinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindLastIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}

/* 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
 */
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
 */
Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs() As String = { "Compsognathus", _
            "Amargasaurus",   "Oviraptor",      "Velociraptor", _
            "Deinonychus",    "Dilophosaurus",  "Gallimimus", _
            "Triceratops" }

        Console.WriteLine()
        For Each dinosaur As String In dinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus))

    End Sub

    ' Search predicate returns true if a string ends in "saurus".
    Private Shared Function EndsWithSaurus(ByVal s As String) _
        As Boolean

        ' AndAlso prevents evaluation of the second Boolean
        ' expression if the string is so short that an error
        ' would occur.
        If (s.Length > 5) AndAlso _
            (s.Substring(s.Length - 6).ToLower() = "saurus") Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

' This code example produces the following output:
'
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'
'Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): 5
'
'Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): 1
'
'Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): -1

注釈

Array は、startIndex から後方に検索され、count が0よりも大きい場合は startIndex からマイナス count になります。The Array is searched backward starting at startIndex and ending at startIndex minus count plus 1, if count is greater than 0.

Predicate<T> は、渡されたオブジェクトがデリゲートで定義されている条件に一致する場合に true を返すメソッドのデリゲートです。The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. array の要素は、個別に Predicate<T>に渡されます。The elements of array are individually passed to the Predicate<T>.

このメソッドは O(n) 操作です。ncount です。This method is an O(n) operation, where n is count.

こちらもご覧ください

適用対象