Array.FindIndex Método

Definición

Busca un elemento que cumpla las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en un objeto Array o en una parte del mismo.

Sobrecargas

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

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en toda la matriz Array.

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

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz Array que va desde el índice especificado hasta el último elemento.

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

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz Array que comienza en el índice especificado y contiene el número especificado de elementos.

Ejemplos

En el ejemplo de código siguiente se muestran las tres sobrecargas del FindIndex método genérico. Se crea una matriz de cadenas, que contiene 8 nombres de dinosaurios, dos de los cuales (en las posiciones 1 y 5) terminan con "diccionario de sinónimos". El ejemplo de código también define un método de predicado de búsqueda denominado EndsWithSaurus, que acepta un parámetro de cadena y devuelve un valor booleano que indica si la cadena de entrada termina en "diccionario de sinónimos".

La FindIndex<T>(T[], Predicate<T>) sobrecarga del método atraviesa la matriz desde el principio, pasando cada elemento a su vez al EndsWithSaurus método . La búsqueda se detiene cuando el EndsWithSaurus método devuelve true para el elemento en la posición 1.

Nota

En C#, F# y Visual Basic, no es necesario crear explícitamente el Predicate<string> delegado (Predicate(Of String) en Visual Basic). Estos idiomas deducen el delegado correcto del contexto y lo crean automáticamente.

La FindIndex<T>(T[], Int32, Predicate<T>) sobrecarga del método se usa para buscar en la matriz a partir de la posición 2 y continuar hasta el final de la matriz. Encuentra el elemento en la posición 5. Por último, la sobrecarga del FindIndex<T>(T[], Int32, Int32, Predicate<T>) método se usa para buscar en el intervalo de tres elementos a partir de la posición 2. Devuelve -1 porque no hay nombres de dinosaurios en ese intervalo que terminan con "diccionario de sinónimos".

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>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en toda la matriz 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

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Parámetros

array
T[]

Array unidimensional de base cero en la que se realizará la búsqueda.

match
Predicate<T>

Predicate<T> que define las condiciones del elemento que se va a buscar.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.

Excepciones

array es null.

O bien

match es null.

Comentarios

Array Se busca hacia delante comenzando en el primer elemento y finalizando en el último elemento.

Predicate<T> es un delegado de un método que devuelve true si el objeto pasado a él coincide con las condiciones definidas en el delegado. Los elementos de array se pasan individualmente a .Predicate<T>

Este método es una operación O(n), donde n es de Lengtharray.

Consulte también

Se aplica a

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

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz Array que va desde el índice especificado hasta el último elemento.

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

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Parámetros

array
T[]

Array unidimensional de base cero en la que se realizará la búsqueda.

startIndex
Int32

Índice inicial de base cero de la búsqueda.

match
Predicate<T>

Predicate<T> que define las condiciones del elemento que se va a buscar.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.

Excepciones

array es null.

o bien

match es null.

startIndex está fuera del intervalo de índices válidos para la array.

Comentarios

Array Se busca hacia delante comenzando en startIndex y finalizando en el último elemento.

Predicate<T> es un delegado de un método que devuelve true si el objeto pasado a él coincide con las condiciones definidas en el delegado. Los elementos de array se pasan individualmente a .Predicate<T>

Este método es una operación O(n), donde n es el número de elementos de startIndex hasta el final de array.

Consulte también

Se aplica a

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

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz Array que comienza en el índice especificado y contiene el número especificado de elementos.

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

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Parámetros

array
T[]

Array unidimensional de base cero en la que se realizará la búsqueda.

startIndex
Int32

Índice inicial de base cero de la búsqueda.

count
Int32

Número de elementos de la sección en la que se va a realizar la búsqueda.

match
Predicate<T>

Predicate<T> que define las condiciones del elemento que se va a buscar.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.

Excepciones

array es null.

O bien

match es null.

startIndex está fuera del intervalo de índices válidos para la array.

O bien

count es menor que cero.

O bien

startIndex y count no especifican una sección válida en array.

Comentarios

Array Se busca hacia delante a partir startIndex de y finalizando en startIndex más count menos 1, si count es mayor que 0.

Predicate<T> es un delegado de un método que devuelve true si el objeto pasado a él coincide con las condiciones definidas en el delegado. Los elementos de array se pasan individualmente a .Predicate<T>

Este método es una operación O(n), donde n es count.

Consulte también

Se aplica a