Array.FindLastIndex Método

Definição

Pesquisa um elemento que corresponda às condições definidas por um predicado especificado e retorna o índice baseado em zero da última ocorrência em um Array ou parte dele.

Sobrecargas

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

Pesquisa um elemento que corresponde às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência em toda a Array.

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

Pesquisa um elemento que corresponde às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência dentro do intervalo de elementos no Array que se estende do primeiro elemento ao índice especificado.

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

Pesquisa por um elemento que corresponda às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência no intervalo de elementos no Array que contém o número de elementos especificado e termina no índice especificado.

Exemplos

O exemplo de código a seguir demonstra todas as três sobrecargas do FindLastIndex método genérico. Uma matriz de cadeias de caracteres é criada, contendo 8 nomes de dinossauro, dois dos quais (nas posições 1 e 5) terminam com "saurus". O exemplo de código também define um método de predicado chamado EndsWithSaurus, que aceita um parâmetro de cadeia de caracteres e retorna um valor booliano que indica se a cadeia de caracteres de entrada termina em "saurus".

A FindLastIndex<T>(T[], Predicate<T>) sobrecarga do método atravessa a matriz para trás do final, passando cada elemento por sua vez para o EndsWithSaurus método. A pesquisa é interrompida quando o EndsWithSaurus método retorna true para o elemento na posição 5.

Observação

Em C#, F# e Visual Basic, não é necessário criar o Predicate<string> delegado (Predicate(Of String) em Visual Basic) explicitamente. Essas linguagens inferem o representante correto pelo contexto e criam-no automaticamente.

A FindLastIndex<T>(T[], Int32, Predicate<T>) sobrecarga do método é usada para pesquisar a matriz começando na posição 4 e continuando para trás até o início da matriz. Ele localiza o elemento na posição 1. Por fim, a sobrecarga do FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) método é usada para pesquisar o intervalo de três elementos começando na posição 4 e trabalhando para trás (ou seja, elementos 4, 3 e 2). Retorna -1 porque não há nomes de dinossauros nesse intervalo que terminam com "saurus".

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::FindLastIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindLastIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
        Array::FindLastIndex(dinosaurs, 4, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}

/* 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
 */
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
 */
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.FindLastIndex(dinosaurs, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, EndsWithSaurus): %i"

Array.FindLastIndex(dinosaurs, 4, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, 4, EndsWithSaurus): %i"

Array.FindLastIndex(dinosaurs, 4, 3, endsWithSaurus)
|> printfn "\nArray.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): %i"


// 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
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.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindLastIndex(dinosaurs, 4, 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.FindLastIndex(dinosaurs, AddressOf EndsWithSaurus): 5
'
'Array.FindLastIndex(dinosaurs, 4, AddressOf EndsWithSaurus): 1
'
'Array.FindLastIndex(dinosaurs, 4, 3, AddressOf EndsWithSaurus): -1

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

Pesquisa um elemento que corresponde às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência em toda a Array.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, Predicate<T> match);
static member FindLastIndex : 'T[] * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), match As Predicate(Of T)) As Integer

Parâmetros de tipo

T

O tipo dos elementos da matriz.

Parâmetros

array
T[]

O Array unidimensional, com base em zero, a ser procurado.

match
Predicate<T>

O Predicate<T> que define as condições do elemento a ser procurado.

Retornos

Int32

O índice de base zero da última ocorrência de um elemento que corresponde às condições definidas por match, se for encontrado; caso contrário, -1.

Exceções

array é null.

- ou -

match é null.

Comentários

O Array é pesquisado para trás começando no último elemento e terminando no primeiro elemento.

O Predicate<T> é um representante para um método que retorna true caso o objeto passado para ele corresponda às condições definidas no representante. Os elementos de array são passados individualmente para o Predicate<T>.

Este método é uma operação O(n), em que n é o Length de array.

Confira também

Aplica-se a

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

Pesquisa um elemento que corresponde às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência dentro do intervalo de elementos no Array que se estende do primeiro elemento ao índice especificado.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, int startIndex, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, int startIndex, Predicate<T> match);
static member FindLastIndex : 'T[] * int * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), startIndex As Integer, match As Predicate(Of T)) As Integer

Parâmetros de tipo

T

O tipo dos elementos da matriz.

Parâmetros

array
T[]

O Array unidimensional, com base em zero, a ser procurado.

startIndex
Int32

O índice inicial com base em zero da pesquisa inversa.

match
Predicate<T>

O Predicate<T> que define as condições do elemento a ser procurado.

Retornos

Int32

O índice de base zero da última ocorrência de um elemento que corresponde às condições definidas por match, se for encontrado; caso contrário, -1.

Exceções

array é null.

- ou -

match é null.

startIndex está fora do intervalo de índices válidos para array.

Comentários

O Array é pesquisado para trás começando startIndex e terminando no primeiro elemento.

O Predicate<T> é um representante para um método que retorna true caso o objeto passado para ele corresponda às condições definidas no representante. Os elementos de array são passados individualmente para o Predicate<T>.

Esse método é uma operação O(n), onde n está o número de elementos do início para array startIndex.

Confira também

Aplica-se a

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

Pesquisa por um elemento que corresponda às condições definidas pelo predicado especificado e retorna o índice baseado em zero da última ocorrência no intervalo de elementos no Array que contém o número de elementos especificado e termina no índice especificado.

public:
generic <typename T>
 static int FindLastIndex(cli::array <T> ^ array, int startIndex, int count, Predicate<T> ^ match);
public static int FindLastIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);
static member FindLastIndex : 'T[] * int * int * Predicate<'T> -> int
Public Shared Function FindLastIndex(Of T) (array As T(), startIndex As Integer, count As Integer, match As Predicate(Of T)) As Integer

Parâmetros de tipo

T

O tipo dos elementos da matriz.

Parâmetros

array
T[]

O Array unidimensional, com base em zero, a ser procurado.

startIndex
Int32

O índice inicial com base em zero da pesquisa inversa.

count
Int32

O número de elementos na seção a ser pesquisada.

match
Predicate<T>

O Predicate<T> que define as condições do elemento a ser procurado.

Retornos

Int32

O índice de base zero da última ocorrência de um elemento que corresponde às condições definidas por match, se for encontrado; caso contrário, -1.

Exceções

array é null.

- ou -

match é null.

startIndex está fora do intervalo de índices válidos para array.

- ou -

count é menor que zero.

- ou -

startIndex e count não especificam uma seção válida em array.

Comentários

O Array é pesquisado para trás começando startIndex e terminando em startIndex menos mais count 1, se count for maior que 0.

O Predicate<T> é um representante para um método que retorna true caso o objeto passado para ele corresponda às condições definidas no representante. Os elementos de array são passados individualmente para o Predicate<T>.

Este método é uma operação O(n), em que n é count.

Confira também

Aplica-se a