Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método 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.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

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

Parámetros

array
Type: T[]

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

startIndex
Type: System.Int32

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

match
Type: System.Predicate<T>

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

Valor devuelto

Type: System.Int32

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

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Exception Condition
ArgumentNullException

El valor de array es null.

-o-

El valor de match es null.

ArgumentOutOfRangeException

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

El Array se busca hacia delante, empezando en startIndex y terminando con el último elemento.

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

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

En el ejemplo de código siguiente se muestra las tres sobrecargas de la FindIndex método genérico. Se crea una matriz de cadenas, que contiene 8 nombres de dinosaurio, dos de los cuales (en las posiciones 1 y 5) terminan en "saurus". 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 de valor que indica si la cadena de entrada termina en "saurus".

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

System_CAPS_noteNota

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

El FindIndex<T>(T[], Int32, Predicate<T>) sobrecarga del método se usa para buscar en la matriz, comenzando en la posición 2 y continuando hasta el final de la matriz. Busca el elemento en la posición 5. Por último, el FindIndex<T>(T[], Int32, Int32, Predicate<T>) sobrecarga del método se usa para buscar en el intervalo de tres elementos, empezando en la posición 2. Devuelve -1 porque no hay ningún nombre de dinosaurio en dicho intervalo que terminan en "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
 */

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: