Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Array.FindLastIndex<T> (Método) (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 última aparición en el intervalo de elementos de la matriz Array que va desde el primer elemento hasta el índice especificado.

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

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

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Parámetros

array
Tipo: T[]
Matriz Array unidimensional de base cero en la que se va a buscar.
startIndex
Tipo: System.Int32
Índice inicial de base cero de la búsqueda hacia atrás.
match
Tipo: System.Predicate<T>
Delegado Predicate<T> que define las condiciones del elemento que se va a buscar.

Valor devuelto

Tipo: 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.

ExcepciónCondición
ArgumentNullException

array es null.

O bien

match es null.

ArgumentOutOfRangeException

startIndex se encuentra fuera del intervalo de índices válidos para array.

La búsqueda en Array se realiza hacia atrás, empezando en startIndex y terminando en el primer elemento.

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

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

En el ejemplo de código siguiente se muestran las tres sobrecargas del método genérico FindLastIndex. 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". En el ejemplo de código también se define un método de predicado de búsqueda denominado EndsWithSaurus, que acepta un parámetro de cadena y devuelve un valor Boolean que indica si la cadena de entrada termina en "saurus".

La sobrecarga del método FindLastIndex<T>(T[], Predicate<T>) recorre la matriz hacia atrás, desde el final, pasando en orden cada elemento al método EndsWithSaurus. La búsqueda se detiene cuando el método EndsWithSaurus devuelve true para el elemento situado en la posición 5.

NotaNota

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

La sobrecarga del método FindLastIndex<T>(T[], Int32, Predicate<T>) 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, se utiliza la sobrecarga del método FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) para buscar hacia atrás en el intervalo de tres elementos que comienza en el elemento 4 (esto es, 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
 */


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft