Array.FindLastIndex Array.FindLastIndex Array.FindLastIndex Array.FindLastIndex Method

定義

搜尋符合指定之述詞所定義的條件之元素,並傳回 Array 內或它的一部分中最後一個相符項目之以零起始的索引。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>) FindLastIndex<T>(T[], Predicate<T>) FindLastIndex<T>(T[], Predicate<T>) FindLastIndex<T>(T[], Predicate<T>)

搜尋符合指定之述詞所定義的條件之元素,並傳回整個 Array 內最後一個相符項目之以零起始的索引。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>) FindLastIndex<T>(T[], Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Predicate<T>)

搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中從第一個項目延伸到指定之索引的項目範圍內,最後一個符合項目之以零為起始的索引。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>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)

搜尋符合指定之述詞所定義的條件之元素,並傳回 Array 中包含指定之元素數目,且結束於指定之索引的元素範圍內最後一個符合項目之以零起始的索引。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>) FindLastIndex<T>(T[], Predicate<T>) FindLastIndex<T>(T[], Predicate<T>) FindLastIndex<T>(T[], Predicate<T>)

搜尋符合指定之述詞所定義的條件之元素,並傳回整個 Array 內最後一個相符項目之以零起始的索引。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[]

要搜尋的一維且以零為起始的 ArrayThe one-dimensional, zero-based Array to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

定義要搜尋項目之條件的 Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外狀況

arraynullarray is null.

-或--or- matchnullmatch is null.

範例

下列程式碼範例示範FindLastIndex泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindLastIndex generic method. 建立字串陣列, 其中包含8個恐龍名稱, 其中兩個 (在位置1和 5) 以 "saurus" 結尾。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". 程式碼範例也會定義名為EndsWithSaurus的搜尋述詞方法, 它會接受字串參數, 並傳回布林值, 指出輸入字串是否以 "saurus" 結尾。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".

方法多載會從結尾EndsWithSaurus往後往返陣列, 然後再將每個元素傳遞至方法。 FindLastIndex<T>(T[], Predicate<T>)The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurustrue方法針對位置5的元素傳回時, 會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

在C#和 Visual Basic 中, 不需要明確地建立Predicate<string>委派 (Predicate(Of String)在 Visual Basic 中)。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>)方法多載是用來搜尋三個元素的範圍 (從位置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). 它會傳回-1, 因為該範圍中沒有以 "saurus" 結尾的恐龍名稱。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
 */
Imports System

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.

是方法的委派, true如果傳遞給它的物件符合委派中定義的條件, 則Predicate<T>會傳回。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>.

這個方法是 On() 運算, 其中nLengtharrayThis method is an O(n) operation, where n is the Length of array.

另請參閱

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

搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中從第一個項目延伸到指定之索引的項目範圍內,最後一個符合項目之以零為起始的索引。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[]

要搜尋的以零為起始的一維 ArrayThe one-dimensional, zero-based Array to search.

startIndex
Int32 Int32 Int32 Int32

向後搜尋之以零為起始的起始索引。The zero-based starting index of the backward search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

定義要搜尋項目之條件的 Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外狀況

arraynullarray is null.

-或--or- matchnullmatch is null.

startIndex 超出 array 的有效索引範圍。startIndex is outside the range of valid indexes for array.

範例

下列程式碼範例示範FindLastIndex泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindLastIndex generic method. 建立字串陣列, 其中包含8個恐龍名稱, 其中兩個 (在位置1和 5) 以 "saurus" 結尾。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". 程式碼範例也會定義名為EndsWithSaurus的搜尋述詞方法, 它會接受字串參數, 並傳回布林值, 指出輸入字串是否以 "saurus" 結尾。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".

方法多載會從結尾EndsWithSaurus往後往返陣列, 然後再將每個元素傳遞至方法。 FindLastIndex<T>(T[], Predicate<T>)The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurustrue方法針對位置5的元素傳回時, 會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

在C#和 Visual Basic 中, 不需要明確地建立Predicate<string>委派 (Predicate(Of String)在 Visual Basic 中)。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>)方法多載是用來搜尋三個元素的範圍 (從位置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). 它會傳回-1, 因為該範圍中沒有以 "saurus" 結尾的恐龍名稱。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
 */
Imports System

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 startIndexThe Array is searched backward starting at startIndex and ending at the first element.

是方法的委派, true如果傳遞給它的物件符合委派中定義的條件, 則Predicate<T>會傳回。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>.

這個方法是 On() 運算, 其中n是從開始到startIndexarray元素數目。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>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)

搜尋符合指定之述詞所定義的條件之元素,並傳回 Array 中包含指定之元素數目,且結束於指定之索引的元素範圍內最後一個符合項目之以零起始的索引。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[]

要搜尋的以零為起始的一維 ArrayThe one-dimensional, zero-based Array to search.

startIndex
Int32 Int32 Int32 Int32

向後搜尋之以零為起始的起始索引。The zero-based starting index of the backward search.

count
Int32 Int32 Int32 Int32

區段中要搜尋的項目數目。The number of elements in the section to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

定義要搜尋項目之條件的 Predicate<T>The Predicate<T> that defines the conditions of the element to search for.

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外狀況

arraynullarray is null.

-或--or- matchnullmatch is null.

startIndex 超出 array 的有效索引範圍。startIndex is outside the range of valid indexes for array.

-或--or- count 小於零。count is less than zero.

-或--or- startIndexcount 未指定 array 中的有效區段。startIndex and count do not specify a valid section in array.

範例

下列程式碼範例示範FindLastIndex泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindLastIndex generic method. 建立字串陣列, 其中包含8個恐龍名稱, 其中兩個 (在位置1和 5) 以 "saurus" 結尾。An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". 程式碼範例也會定義名為EndsWithSaurus的搜尋述詞方法, 它會接受字串參數, 並傳回布林值, 指出輸入字串是否以 "saurus" 結尾。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".

方法多載會從結尾EndsWithSaurus往後往返陣列, 然後再將每個元素傳遞至方法。 FindLastIndex<T>(T[], Predicate<T>)The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. EndsWithSaurustrue方法針對位置5的元素傳回時, 會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 5.

注意

在C#和 Visual Basic 中, 不需要明確地建立Predicate<string>委派 (Predicate(Of String)在 Visual Basic 中)。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>)方法多載是用來搜尋三個元素的範圍 (從位置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). 它會傳回-1, 因為該範圍中沒有以 "saurus" 結尾的恐龍名稱。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
 */
Imports System

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 startIndex count大於 0, 則會在後端開始搜尋, 並在減號加1的結尾處結束。 countThe Array is searched backward starting at startIndex and ending at startIndex minus count plus 1, if count is greater than 0.

是方法的委派, true如果傳遞給它的物件符合委派中定義的條件, 則Predicate<T>會傳回。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) 運算, 其中ncountThis method is an O(n) operation, where n is count.

另請參閱

適用於