Array.FindLastIndex 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 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(Of String)
中显式创建Predicate<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。
例外
注解
从 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>
适用于
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。
例外
startIndex
超出了 array
的有效索引范围。
注解
Array从第一个startIndex
元素开始向后搜索,并在第一个元素处结束。
Predicate<T>是方法的委托,如果传递给该方法的对象与委托中定义的条件匹配,则返回true
该方法。 的 array
元素单独传递给 Predicate<T>。
此方法是一种 O (n
) 操作,其中 n
是从 开头到 startIndex
的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>
适用于
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。
例外
startIndex
超出了 array
的有效索引范围。
- 或 -
count
小于零。
- 或 -
startIndex
和 count
未在 array
中指定有效部分。
注解
Array如果 count
大于 0,则从负count
加 1 开始startIndex
向后startIndex
搜索 。
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>