Array.FindIndex 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
搜尋符合指定述詞所定義之條件的項目,並傳回 Array 內第一次出現或為其一部分之以零為起始的索引。
多載
FindIndex<T>(T[], Predicate<T>) |
搜尋符合指定之述詞所定義的條件之項目,並傳回整個 Array 內第一次出現之以零為起始的索引。 |
FindIndex<T>(T[], Int32, Predicate<T>) |
搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 內 (從指定之索引延伸到最後一個項目),於某項目範圍中第一次出現之以零為起始的索引。 |
FindIndex<T>(T[], Int32, Int32, Predicate<T>) |
搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中從指定之索引開始,且包含指定之項目數目的項目範圍內第一個符合項目之以零為起始的索引。 |
範例
下列程式碼範例示範泛型方法的所有三個 FindIndex 多載。 建立字串陣列,其中包含 8 個恐龍名稱,其中兩個 (位置 1 和 5) 結尾為 「saurus」。 程式碼範例也會定義名為 EndsWithSaurus
的搜尋述詞方法,此方法會接受字串參數,並傳回布林值,指出輸入字串是否以 「saurus」 結尾。
方法 FindIndex<T>(T[], Predicate<T>) 多載會從開頭周遊陣列,再將每個元素傳遞至 EndsWithSaurus
方法。 當 方法傳回 true
位置 1 的專案時 EndsWithSaurus
,搜尋會停止。
注意
在 C#、F# 和 Visual Basic 中,不需要明確地在 Visual Basic) 中建立 Predicate<string>
委派 (Predicate(Of String)
。 這些語言會從內容推斷正確的委派,並自動建立它。
方法 FindIndex<T>(T[], Int32, Predicate<T>) 多載可用來搜尋從位置 2 開始的陣列,並繼續到陣列結尾。 它會尋找位置 5 的專案。 最後, FindIndex<T>(T[], Int32, Int32, Predicate<T>) 方法多載是用來搜尋從位置 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::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
*/
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.FindIndex(dinosaurs, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, EndsWithSaurus): %i"
Array.FindIndex(dinosaurs, 2, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, 2, EndsWithSaurus): %i"
Array.FindIndex(dinosaurs, 2, 3, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): %i"
// 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
FindIndex<T>(T[], Predicate<T>)
搜尋符合指定之述詞所定義的條件之項目,並傳回整個 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
陣列項目的類型。
參數
- array
- T[]
要搜尋的一維且以零為起始的 Array。
- match
- Predicate<T>
定義要搜尋項目之條件的 Predicate<T>。
傳回
第一次出現符合 match
所定義之條件的項目以零為起始的索引 (如有找到);否則為 -1。
例外狀況
備註
會 Array 從第一個專案開始向前搜尋,並在最後一個元素結束。
Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true
。 的專案 array
會個別傳遞至 Predicate<T> 。
這個方法是 O (n
) 作業,其中 n
是 Length 的 array
。
另請參閱
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
適用於
FindIndex<T>(T[], Int32, Predicate<T>)
搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 內 (從指定之索引延伸到最後一個項目),於某項目範圍中第一次出現之以零為起始的索引。
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
陣列項目的類型。
參數
- array
- T[]
要搜尋的一維且以零為起始的 Array。
- startIndex
- Int32
搜尋之以零為起始的起始索引。
- match
- Predicate<T>
定義要搜尋項目之條件的 Predicate<T>。
傳回
第一次出現符合 match
所定義之條件的項目以零為起始的索引 (如有找到);否則為 -1。
例外狀況
startIndex
超出 array
的有效索引範圍。
備註
會 Array 向前搜尋,從 startIndex
最後一個專案開始和結束。
Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true
。 的專案 array
會個別傳遞至 Predicate<T> 。
這個方法是 O (n
) 作業,其中 n
是從 到 結尾的專案 array
數目 startIndex
。
另請參閱
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
適用於
FindIndex<T>(T[], Int32, Int32, Predicate<T>)
搜尋符合指定之述詞所定義的條件之項目,並傳回 Array 中從指定之索引開始,且包含指定之項目數目的項目範圍內第一個符合項目之以零為起始的索引。
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
陣列項目的類型。
參數
- array
- T[]
要搜尋的一維且以零為起始的 Array。
- startIndex
- Int32
搜尋之以零為起始的起始索引。
- count
- Int32
區段中要搜尋的項目數目。
- match
- Predicate<T>
定義要搜尋項目之條件的 Predicate<T>。
傳回
第一次出現符合 match
所定義之條件的項目以零為起始的索引 (如有找到);否則為 -1。
例外狀況
startIndex
超出 array
的有效索引範圍。
-或-
count
小於零。
-或-
startIndex
和 count
未指定 array
中的有效區段。
備註
如果 大於 0,則會 Array 從 開始 startIndex
搜尋 ,結尾為 startIndex
加 count
減 count
1。
Predicate<T>是方法的委派,如果傳遞給它的物件符合委派中定義的條件,則會傳回 true
。 的專案 array
會個別傳遞至 Predicate<T> 。
這個方法是 O (n
) 作業,其中 n
是 count
。
另請參閱
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>