Прочитать на английском

Поделиться через


Array.FindIndex Метод

Определение

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

Примечание

В C#, F# и Visual Basic необязательно явно создавать Predicate<string> делегат (Predicate(Of String) в Visual Basic). Эти языки определяют правильный делегат из контекста и создают его автоматически.

Перегрузка FindIndex<T>(T[], Int32, Predicate<T>) метода используется для поиска массива, начинающегося с позиции 2 и продолжающегося до конца массива. Он находит элемент в позиции 5. Наконец, перегрузка FindIndex<T>(T[], Int32, Int32, Predicate<T>) метода используется для поиска в диапазоне трех элементов, начиная с позиции 2. Он возвращает -1, потому что в этом диапазоне нет имен динозавров, которые заканчиваются на "saurus".

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
 */

FindIndex<T>(T[], Predicate<T>)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.cs

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого найденного вхождения в пределах всего списка Array.

public static int FindIndex<T> (T[] array, Predicate<T> match);

Параметры типа

T

Тип элементов массива.

Параметры

array
T[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.

match
Predicate<T>

Объект Predicate<T>, определяющий условия поиска элемента.

Возвращаемое значение

Отсчитываемый от нуля индекс первого вхождения элемента, отвечающего условиям предиката match, если такой элемент найден. В противном случае значение –1.

Исключения

array имеет значение null.

-или-

match имеет значение null.

Комментарии

Выполняется Array поиск вперед, начиная с первого элемента и заканчивая последним элементом.

Predicate<T> это делегат метода, который возвращает true значение , если переданный ему объект соответствует условиям, определенным в делегате. Элементы по отдельности array передаются в Predicate<T>.

Этот метод является операцией O(n), где n — из Lengtharray.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

FindIndex<T>(T[], Int32, Predicate<T>)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.cs

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка Array, начиная с заданного индекса и заканчивая последним элементом.

public static int FindIndex<T> (T[] array, int startIndex, Predicate<T> match);

Параметры типа

T

Тип элементов массива.

Параметры

array
T[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.

startIndex
Int32

Индекс (с нуля) начальной позиции поиска.

match
Predicate<T>

Объект Predicate<T>, определяющий условия поиска элемента.

Возвращаемое значение

Отсчитываемый от нуля индекс первого вхождения элемента, отвечающего условиям предиката match, если такой элемент найден. В противном случае значение –1.

Исключения

array имеет значение null.

-или-

match имеет значение null.

startIndex находится вне диапазона допустимых индексов для array.

Комментарии

Выполняется Array поиск вперед, начиная с startIndex и заканчивая последним элементом.

Predicate<T> это делегат метода, который возвращает true значение , если переданный ему объект соответствует условиям, определенным в делегате. Элементы по отдельности array передаются в Predicate<T>.

Этот метод является операцией O(n), где n — количество элементов от startIndex до конца array.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

FindIndex<T>(T[], Int32, Int32, Predicate<T>)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.cs

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка Array, начинающемся с заданного индекса и содержащем указанное число элементов.

public static int FindIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);

Параметры типа

T

Тип элементов массива.

Параметры

array
T[]

Одномерный массив Array, индексация которого начинается с нуля и в котором нужно выполнить поиск.

startIndex
Int32

Индекс (с нуля) начальной позиции поиска.

count
Int32

Число элементов в диапазоне, в котором выполняется поиск.

match
Predicate<T>

Объект Predicate<T>, определяющий условия поиска элемента.

Возвращаемое значение

Отсчитываемый от нуля индекс первого вхождения элемента, отвечающего условиям предиката match, если такой элемент найден. В противном случае значение –1.

Исключения

array имеет значение null.

-или-

match имеет значение null.

startIndex находится вне диапазона допустимых индексов для array.

-или-

Значение параметра count меньше нуля.

-или-

startIndex и count не указывают допустимый раздел в array.

Комментарии

Выполняется Array поиск вперед, начиная с startIndex и заканчивая startIndex плюс count минус 1, если count больше 0.

Predicate<T> это делегат метода, который возвращает true значение , если переданный ему объект соответствует условиям, определенным в делегате. Элементы по отдельности array передаются в Predicate<T>.

Этот метод является операцией O(n), где n — .count

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0