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
. Поиск останавливается, EndsWithSaurus
когда метод возвращает значение true
для элемента в позиции 5.
Примечание
В C#, F# и Visual Basic необязательно создавать Predicate<string>
делегат (Predicate(Of String)
в Visual Basic) явным образом. Эти языки определяют правильный делегат из контекста и создают его автоматически.
Перегрузка 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>)
- Исходный код:
- Array.cs
- Исходный код:
- Array.cs
- Исходный код:
- 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
— из Lengtharray
.
См. также раздел
- 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>)
- Исходный код:
- Array.cs
- Исходный код:
- Array.cs
- Исходный код:
- 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
— количество элементов от начала 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>
Применяется к
FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)
- Исходный код:
- Array.cs
- Исходный код:
- Array.cs
- Исходный код:
- 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 выполняется в обратном startIndex
направлении, начиная с и заканчивая startIndex
минус count
плюс 1, если count
больше 0.
— 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>