Array.FindLastIndex 方法

定義

搜尋符合指定述詞所定義之條件的項目,並傳回 Array 內最後一次出現或為其一部分之以零為起始的索引。

多載

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

搜尋符合指定之述詞所定義的條件之項目,並傳回整個 Array 內最後一次出現之以為零起始的索引。

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

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

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

搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中包含指定之項目數目,且結束於指定之索引的項目範圍內最後一個符合項目之以零為起始的索引。

範例

下列程式碼範例示範泛型方法的所有三個 FindLastIndex 多載。 建立字串陣列,其中包含 8 個恐龍名稱,其中兩個 (位置 1 和 5) 結尾為 「saurus」。 程式碼範例也會定義名為 EndsWithSaurus 的搜尋述詞方法,此方法會接受字串參數,並傳回布林值,指出輸入字串是否以 「saurus」 結尾。

方法 FindLastIndex<T>(T[], Predicate<T>) 多載會從結尾向後周遊陣列,並接著將每個元素傳遞至 EndsWithSaurus 方法。 當方法傳回 true 位置 5 的專案時 EndsWithSaurus ,搜尋會停止。

注意

在 C#、F# 和 Visual Basic 中,不需要在 Visual Basic 中明確建立 Predicate<string> 委派 (Predicate(Of String)) 。 這些語言會從內容推斷正確的委派,並自動建立它。

方法 FindLastIndex<T>(T[], Int32, Predicate<T>) 多載可用來搜尋從位置 4 開始的陣列,然後繼續回到陣列的開頭。 它會尋找位於位置 1 的專案。 最後, FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) 方法多載是用來搜尋從位置 4 開始的三個元素範圍,並回溯 (也就是元素 4、3 和 2) 。 它會傳回 -1,因為該範圍中沒有以 「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
 */
open System

// Search predicate returns true if a string ends in "saurus".
let endsWithSaurus (s: string) =
    s.Length > 5 && s.Substring(s.Length - 6).ToLower() = "saurus"

let dinosaurs =
    [| "Compsognathus"; "Amargasaurus"
       "Oviraptor"; "Velociraptor"
       "Deinonychus"; "Dilophosaurus"
       "Gallimimus"; "Triceratops" |]

printfn ""
for dino in dinosaurs do
    printfn $"{dino}"

Array.FindLastIndex(dinosaurs, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, EndsWithSaurus): %i"

Array.FindLastIndex(dinosaurs, 4, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, 4, EndsWithSaurus): %i"

Array.FindLastIndex(dinosaurs, 4, 3, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): %i"


// 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

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

Source:
Array.cs
Source:
Array.cs
Source:
Array.cs

搜尋符合指定之述詞所定義的條件之項目,並傳回整個 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

陣列項目的類型。

參數

array
T[]

要搜尋的一維且以零為起始的 Array

match
Predicate<T>

定義要搜尋項目之條件的 Predicate<T>

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。

例外狀況

arraynull

-或-

matchnull

備註

Array 從最後一個專案開始向後搜尋,並在第一個元素結束。

Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true 。 的專案 array 會個別傳遞至 Predicate<T>

這個方法是 O (n) 作業,其中 nLengtharray

另請參閱

適用於

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

Source:
Array.cs
Source:
Array.cs
Source:
Array.cs

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

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

陣列項目的類型。

參數

array
T[]

要搜尋的一維且以零為起始的 Array

startIndex
Int32

向後搜尋之以零為起始的起始索引。

match
Predicate<T>

定義要搜尋項目之條件的 Predicate<T>

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。

例外狀況

arraynull

-或-

matchnull

startIndex 超出 array 的有效索引範圍。

備註

ArraystartIndex 第一個元素開始向後搜尋 , 並結束。

Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true 。 的專案 array 會個別傳遞至 Predicate<T>

這個方法是 O (n) 作業,其中 n 是從 開始 arraystartIndex 的專案數目。

另請參閱

適用於

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

Source:
Array.cs
Source:
Array.cs
Source:
Array.cs

搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中包含指定之項目數目,且結束於指定之索引的項目範圍內最後一個符合項目之以零為起始的索引。

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

陣列項目的類型。

參數

array
T[]

要搜尋的一維且以零為起始的 Array

startIndex
Int32

向後搜尋之以零為起始的起始索引。

count
Int32

區段中要搜尋的項目數目。

match
Predicate<T>

定義要搜尋項目之條件的 Predicate<T>

傳回

符合 match 所定義條件的元素,最後一次出現項目之以零為起始的索引 (若有找到),否則為 -1。

例外狀況

arraynull

-或-

matchnull

startIndex 超出 array 的有效索引範圍。

-或-

count 小於零。

-或-

startIndexcount 未指定 array 中的有效區段。

備註

如果 大於 0,則會 Array 從 開始向後 startIndex 搜尋 , count 且結尾為 startIndex 減號 count 加上 1。

Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true 。 的專案 array 會個別傳遞至 Predicate<T>

這個方法是 O (n) 作業,其中 ncount

另請參閱

適用於