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.FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)

 

Publicado: octubre de 2016

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

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

public static int FindLastIndex<T>(
	T[] array,
	int startIndex,
	int count,
	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 hacia atrás.

count
Type: System.Int32

Número de elementos de la sección en la que se va a realizar 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 última 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.

-o-

count es menor que cero.

-o-

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

El Array es la búsqueda hacia atrás empezando en startIndex y terminando en startIndex menos count más 1, si count es mayor que 0.

El Predicate<T> es un delegado a un método que devuelve true Si el objeto pasa a 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 count.

En el ejemplo de código siguiente se muestra las tres sobrecargas de la FindLastIndex 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 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 FindLastIndex<T>(T[], Predicate<T>) sobrecarga del método recorre la matriz hacia atrás desde el final, pasando cada elemento a su vez a la EndsWithSaurus (método). La búsqueda detiene cuando la EndsWithSaurus método devuelve true para el elemento en la posición 5.

System_CAPS_noteNota

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

El FindLastIndex<T>(T[], Int32, Predicate<T>) sobrecarga del método se usa para buscar en la matriz, comenzando en la posición 4 y siguiendo hacia atrás hasta el principio de la matriz. Encuentra el elemento en la posición 1. Por último, el FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) sobrecarga del método se usa para buscar en el intervalo de tres elementos comenzando en la posición 4 y trabajando hacia atrás (es decir, en los elementos 4, 3 y 2). Devuelve – 1 porque no hay ningún nombre de dinosaurio en dicho intervalo que termine 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.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
 */

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: