Array.FindIndex Array.FindIndex Array.FindIndex Array.FindIndex Method

定義

搜尋符合指定述詞所定義之條件的項目,並傳回 Array 內第一次出現或為其一部分之以零為起始的索引。Searches for an element that matches the conditions defined by a specified predicate, and returns the zero-based index of the first occurrence within an Array or a portion of it.

多載

FindIndex<T>(T[], Predicate<T>) FindIndex<T>(T[], Predicate<T>) FindIndex<T>(T[], Predicate<T>) FindIndex<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 first occurrence within the entire Array.

FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<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 first occurrence within the range of elements in the Array that extends from the specified index to the last element.

FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<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 first occurrence within the range of elements in the Array that starts at the specified index and contains the specified number of elements.

FindIndex<T>(T[], Predicate<T>) FindIndex<T>(T[], Predicate<T>) FindIndex<T>(T[], Predicate<T>) FindIndex<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 first occurrence within the entire Array.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, Predicate<T> match);
static member FindIndex : 'T[] * Predicate<'T> -> int
Public Shared Function FindIndex(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 first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

例外狀況

arraynullarray is null.

-或--or- matchnullmatch is null.

範例

下列程式碼範例會示範 FindIndex 泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindIndex 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".

@No__t 0 的方法多載會從開頭開始遍歷陣列,然後再將每個元素傳遞給 EndsWithSaurus 方法。The FindIndex<T>(T[], Predicate<T>) method overload traverses the array from the beginning, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus 方法為位置1的元素傳回 true 時,就會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 1.

注意

在C#和 Visual Basic 中,不需要明確地建立 @no__t 1 委派(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.

@No__t-0 方法多載是用來搜尋陣列(從位置2開始),並繼續到陣列的結尾。The FindIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 2 and continuing to the end of the array. 它會在位置5尋找元素。It finds the element at position 5. 最後,使用 FindIndex<T>(T[], Int32, Int32, Predicate<T>) 方法多載,從位置2開始搜尋三個元素的範圍。Finally, the FindIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 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::FindIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

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

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

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array::FindIndex(dinosaurs, EndsWithSaurus): 1

Array::FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array::FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): {0}", 
            Array.FindIndex(dinosaurs, EndsWithSaurus));

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

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): 1

Array.FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus))

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

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): 1
'
'Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus): 5
'
'Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): -1

備註

@No__t-0 會從第一個元素開始搜尋,並在最後一個元素結束。The Array is searched forward starting at the first element and ending at the last element.

@No__t-0 是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 trueThe Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. @No__t-0 的元素會個別傳遞給 Predicate<T>The elements of array are individually passed to the Predicate<T>.

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

另請參閱

FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<T>(T[], Int32, Predicate<T>) FindIndex<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 first occurrence within the range of elements in the Array that extends from the specified index to the last element.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, int startIndex, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, int startIndex, Predicate<T> match);
static member FindIndex : 'T[] * int * Predicate<'T> -> int
Public Shared Function FindIndex(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 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 first 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.

範例

下列程式碼範例會示範 FindIndex 泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindIndex 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".

@No__t 0 的方法多載會從開頭開始遍歷陣列,然後再將每個元素傳遞給 EndsWithSaurus 方法。The FindIndex<T>(T[], Predicate<T>) method overload traverses the array from the beginning, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus 方法為位置1的元素傳回 true 時,就會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 1.

注意

在C#和 Visual Basic 中,不需要明確地建立 @no__t 1 委派(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.

@No__t-0 方法多載是用來搜尋陣列(從位置2開始),並繼續到陣列的結尾。The FindIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 2 and continuing to the end of the array. 它會在位置5尋找元素。It finds the element at position 5. 最後,使用 FindIndex<T>(T[], Int32, Int32, Predicate<T>) 方法多載,從位置2開始搜尋三個元素的範圍。Finally, the FindIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 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::FindIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

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

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

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array::FindIndex(dinosaurs, EndsWithSaurus): 1

Array::FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array::FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): {0}", 
            Array.FindIndex(dinosaurs, EndsWithSaurus));

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

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): 1

Array.FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus))

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

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): 1
'
'Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus): 5
'
'Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): -1

備註

@No__t-0 會從 startIndex 開始向前搜尋,並在最後一個元素結束。The Array is searched forward starting at startIndex and ending at the last element.

@No__t-0 是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 trueThe Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. @No__t-0 的元素會個別傳遞給 Predicate<T>The elements of array are individually passed to the Predicate<T>.

這個方法是 O (n)運算,其中 n 是從 startIndexarray 結尾的元素數目。This method is an O(n) operation, where n is the number of elements from startIndex to the end of array.

另請參閱

FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<T>(T[], Int32, Int32, Predicate<T>) FindIndex<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 first occurrence within the range of elements in the Array that starts at the specified index and contains the specified number of elements.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, int startIndex, int count, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);
static member FindIndex : 'T[] * int * int * Predicate<'T> -> int
Public Shared Function FindIndex(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 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 first 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.

範例

下列程式碼範例會示範 FindIndex 泛型方法的所有三個多載。The following code example demonstrates all three overloads of the FindIndex 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".

@No__t 0 的方法多載會從開頭開始遍歷陣列,然後再將每個元素傳遞給 EndsWithSaurus 方法。The FindIndex<T>(T[], Predicate<T>) method overload traverses the array from the beginning, passing each element in turn to the EndsWithSaurus method. EndsWithSaurus 方法為位置1的元素傳回 true 時,就會停止搜尋。The search stops when the EndsWithSaurus method returns true for the element at position 1.

注意

在C#和 Visual Basic 中,不需要明確地建立 @no__t 1 委派(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.

@No__t-0 方法多載是用來搜尋陣列(從位置2開始),並繼續到陣列的結尾。The FindIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 2 and continuing to the end of the array. 它會在位置5尋找元素。It finds the element at position 5. 最後,使用 FindIndex<T>(T[], Int32, Int32, Predicate<T>) 方法多載,從位置2開始搜尋三個元素的範圍。Finally, the FindIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 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::FindIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

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

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

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array::FindIndex(dinosaurs, EndsWithSaurus): 1

Array::FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array::FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): {0}", 
            Array.FindIndex(dinosaurs, EndsWithSaurus));

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

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, EndsWithSaurus): 1

Array.FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus))

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

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, 2, 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.FindIndex(dinosaurs, AddressOf EndsWithSaurus): 1
'
'Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus): 5
'
'Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): -1

備註

@No__t-0 會從 startIndex 開始向前搜尋,而如果 count 大於0,則會在 startIndexcount 減1時結束。The Array is searched forward starting at startIndex and ending at startIndex plus count minus 1, if count is greater than 0.

@No__t-0 是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 trueThe Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. @No__t-0 的元素會個別傳遞給 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.

另請參閱

適用於