Array.FindIndex Метод

Определение

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в пределах всего массива 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>)

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого найденного вхождения в пределах всего списка 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>)

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка 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>)

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка 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>)

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого найденного вхождения в пределах всего списка 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[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.The one-dimensional, zero-based Array to search.

match
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.

Исключения

Свойство array имеет значение null.array is null.

- или --or- Свойство match имеет значение null.match is null.

Примеры

В следующем примере кода показаны все три перегрузки FindIndex универсального метода.The following code example demonstrates all three overloads of the FindIndex generic method. Создается массив строк, содержащий 8 названий динозавров, два из которых (в позициях 1 и 5) заканчиваются на "саурус".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". В примере кода также определяется метод предиката поиска с именем EndsWithSaurus, который принимает строковый параметр и возвращает логическое значение, указывающее, заканчивается ли входная строка в "саурус".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".

Перегрузка метода FindIndex<T>(T[], Predicate<T>) проходит по массиву с начала, передавая каждый элемент в свою очередь методу 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 возвращает true для элемента в позиции 1.The search stops when the EndsWithSaurus method returns true for the element at position 1.

Примечание

В C# и Visual Basic нет необходимости явно создавать делегат Predicate<string> (Predicate(Of String) в Visual Basic).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.

Перегрузка метода FindIndex<T>(T[], Int32, Predicate<T>) используется для поиска в массиве, начиная с позиции 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, так как в этом диапазоне нет названий динозавров, заканчивающихся на "саурус".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

Комментарии

Поиск Array выполняется в прямом направлении, начиная с первого элемента и заканчивая последним элементом.The Array is searched forward starting at the first element and ending at the last element.

Predicate<T> является делегатом для метода, который возвращает true, если переданный ему объект соответствует условиям, определенным в делегате.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Элементы array по отдельности передаются в Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Этот метод является операцией O (n), где n является Lengthом array.This method is an O(n) operation, where n is the Length of array.

Дополнительно

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[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.The one-dimensional, zero-based Array to search.

startIndex
Int32

Индекс (с нуля) начальной позиции поиска.The zero-based starting index of the search.

match
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.

Исключения

Свойство array имеет значение null.array is null.

- или --or- Свойство match имеет значение null.match 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) заканчиваются на "саурус".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". В примере кода также определяется метод предиката поиска с именем EndsWithSaurus, который принимает строковый параметр и возвращает логическое значение, указывающее, заканчивается ли входная строка в "саурус".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".

Перегрузка метода FindIndex<T>(T[], Predicate<T>) проходит по массиву с начала, передавая каждый элемент в свою очередь методу 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 возвращает true для элемента в позиции 1.The search stops when the EndsWithSaurus method returns true for the element at position 1.

Примечание

В C# и Visual Basic нет необходимости явно создавать делегат Predicate<string> (Predicate(Of String) в Visual Basic).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.

Перегрузка метода FindIndex<T>(T[], Int32, Predicate<T>) используется для поиска в массиве, начиная с позиции 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, так как в этом диапазоне нет названий динозавров, заканчивающихся на "саурус".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

Комментарии

Array ищется в прямом направлении, начиная с startIndex и заканчивая последним элементом.The Array is searched forward starting at startIndex and ending at the last element.

Predicate<T> является делегатом для метода, который возвращает true, если переданный ему объект соответствует условиям, определенным в делегате.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Элементы array по отдельности передаются в Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Этот метод является операцией O (n), где n — число элементов с startIndex до конца array.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>)

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка 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[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.The one-dimensional, zero-based Array to search.

startIndex
Int32

Индекс (с нуля) начальной позиции поиска.The zero-based starting index of the search.

count
Int32

Число элементов в диапазоне, в котором выполняется поиск.The number of elements in the section to search.

match
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.

Исключения

Свойство array имеет значение null.array is null.

- или --or- Свойство match имеет значение null.match is null.

startIndex находится вне диапазона допустимых индексов для array.startIndex is outside the range of valid indexes for array.

- или --or- Значение параметра count меньше нуля.count is less than zero.

- или --or- startIndex и count не указывают допустимый раздел в 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) заканчиваются на "саурус".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". В примере кода также определяется метод предиката поиска с именем EndsWithSaurus, который принимает строковый параметр и возвращает логическое значение, указывающее, заканчивается ли входная строка в "саурус".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".

Перегрузка метода FindIndex<T>(T[], Predicate<T>) проходит по массиву с начала, передавая каждый элемент в свою очередь методу 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 возвращает true для элемента в позиции 1.The search stops when the EndsWithSaurus method returns true for the element at position 1.

Примечание

В C# и Visual Basic нет необходимости явно создавать делегат Predicate<string> (Predicate(Of String) в Visual Basic).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.

Перегрузка метода FindIndex<T>(T[], Int32, Predicate<T>) используется для поиска в массиве, начиная с позиции 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, так как в этом диапазоне нет названий динозавров, заканчивающихся на "саурус".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

Комментарии

Array ищется в прямом направлении, начиная с startIndex и заканчивая на startIndex Plus count минус 1, если count больше 0.The Array is searched forward starting at startIndex and ending at startIndex plus count minus 1, if count is greater than 0.

Predicate<T> является делегатом для метода, который возвращает true, если переданный ему объект соответствует условиям, определенным в делегате.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Элементы array по отдельности передаются в Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Этот метод является операцией O (n), где n count.This method is an O(n) operation, where n is count.

Дополнительно

Применяется к