Array.FindLastIndex Array.FindLastIndex Array.FindLastIndex Array.FindLastIndex Method

Definizione

Cerca un elemento che soddisfi le condizioni definite da un predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno di un oggetto Array o in parte di esso.Searches for an element that matches the conditions defined by a specified predicate, and returns the zero-based index of the last occurrence within an Array or a portion of it.

Overload

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

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intero oggetto Array.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire Array.

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

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi in Array compreso tra il primo elemento e l'indice specificato.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

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

Cerca un elemento che soddisfi le condizioni definite nel predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi dell'oggetto Array che contiene il numero indicato di elementi e termina in corrispondenza dell'indice specificato.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

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

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intero oggetto Array.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire 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

Parametri di tipo

T

Tipo degli elementi della matrice.The type of the elements of the array.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.The one-dimensional, zero-based Array to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.The Predicate<T> that defines the conditions of the element to search for.

Restituisce

Indice in base zero dell'ultima occorrenza di un elemento che corrisponde alle condizioni definite in match, se presente; in caso contrario, -1.The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Eccezioni

array è null.array is null.

-oppure--or- match è null.match is null.

Esempi

Nell'esempio di codice seguente vengono illustrati tutti e tre gli overload del metodo generico FindLastIndex.The following code example demonstrates all three overloads of the FindLastIndex generic method. Viene creata una matrice di stringhe che contiene 8 nomi di dinosauri, due dei quali (nelle posizioni 1 e 5) terminano con "saurus".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". Nell'esempio di codice viene definito anche un metodo del predicato di ricerca denominato EndsWithSaurus, che accetta un parametro di stringa e restituisce un valore booleano che indica se la stringa di input termina in "saurus".The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

L'overload del metodo FindLastIndex<T>(T[], Predicate<T>) attraversa la matrice indietro rispetto alla fine, passando ogni elemento a sua volta al metodo EndsWithSaurus.The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. La ricerca si interrompe quando il metodo EndsWithSaurus restituisce true per l'elemento nella posizione 5.The search stops when the EndsWithSaurus method returns true for the element at position 5.

Nota

In C# e Visual Basic non è necessario creare in modo esplicito il delegato Predicate<string> (Predicate(Of String) in Visual Basic).In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. Questi linguaggi deducono il delegato corretto dal contesto e lo creano automaticamente.These languages infer the correct delegate from context and create it automatically.

L'overload del metodo FindLastIndex<T>(T[], Int32, Predicate<T>) viene usato per eseguire la ricerca nella matrice a partire dalla posizione 4 e continuare fino all'inizio della matrice.The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. Trova l'elemento in corrispondenza della posizione 1.It finds the element at position 1. Infine, viene utilizzato l'overload del metodo FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) per eseguire una ricerca nell'intervallo di tre elementi a partire dalla posizione 4 e lavorare a ritroso (ovvero gli elementi 4, 3 e 2).Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). Restituisce-1 perché nell'intervallo non sono presenti nomi di dinosauri che terminano con "saurus".It returns -1 because there are no dinosaur names in that range that end with "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
 */
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

Commenti

Il Array viene cercato all'indietro a partire dall'ultimo elemento e termina in corrispondenza del primo elemento.The Array is searched backward starting at the last element and ending at the first element.

Il Predicate<T> è un delegato a un metodo che restituisce true se l'oggetto passato a esso corrisponde alle condizioni definite nel delegato.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Gli elementi di array vengono passati singolarmente al Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Questo metodo è un'operazione O (n), in cui n è il Length di array.This method is an O(n) operation, where n is the Length of array.

Vedi anche

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

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi in Array compreso tra il primo elemento e l'indice specificato.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

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

Parametri di tipo

T

Tipo degli elementi della matrice.The type of the elements of the array.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.The one-dimensional, zero-based Array to search.

startIndex
Int32 Int32 Int32 Int32

Indice iniziale in base zero della ricerca all'indietro.The zero-based starting index of the backward search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.The Predicate<T> that defines the conditions of the element to search for.

Restituisce

Indice in base zero dell'ultima occorrenza di un elemento che corrisponde alle condizioni definite in match, se presente; in caso contrario, -1.The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Eccezioni

array è null.array is null.

-oppure--or- match è null.match is null.

startIndex non è compreso nell'intervallo di indici validi per array.startIndex is outside the range of valid indexes for array.

Esempi

Nell'esempio di codice seguente vengono illustrati tutti e tre gli overload del metodo generico FindLastIndex.The following code example demonstrates all three overloads of the FindLastIndex generic method. Viene creata una matrice di stringhe che contiene 8 nomi di dinosauri, due dei quali (nelle posizioni 1 e 5) terminano con "saurus".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". Nell'esempio di codice viene definito anche un metodo del predicato di ricerca denominato EndsWithSaurus, che accetta un parametro di stringa e restituisce un valore booleano che indica se la stringa di input termina in "saurus".The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

L'overload del metodo FindLastIndex<T>(T[], Predicate<T>) attraversa la matrice indietro rispetto alla fine, passando ogni elemento a sua volta al metodo EndsWithSaurus.The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. La ricerca si interrompe quando il metodo EndsWithSaurus restituisce true per l'elemento nella posizione 5.The search stops when the EndsWithSaurus method returns true for the element at position 5.

Nota

In C# e Visual Basic non è necessario creare in modo esplicito il delegato Predicate<string> (Predicate(Of String) in Visual Basic).In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. Questi linguaggi deducono il delegato corretto dal contesto e lo creano automaticamente.These languages infer the correct delegate from context and create it automatically.

L'overload del metodo FindLastIndex<T>(T[], Int32, Predicate<T>) viene usato per eseguire la ricerca nella matrice a partire dalla posizione 4 e continuare fino all'inizio della matrice.The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. Trova l'elemento in corrispondenza della posizione 1.It finds the element at position 1. Infine, viene utilizzato l'overload del metodo FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) per eseguire una ricerca nell'intervallo di tre elementi a partire dalla posizione 4 e lavorare a ritroso (ovvero gli elementi 4, 3 e 2).Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). Restituisce-1 perché nell'intervallo non sono presenti nomi di dinosauri che terminano con "saurus".It returns -1 because there are no dinosaur names in that range that end with "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
 */
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

Commenti

Il Array viene cercato a ritroso a partire da startIndex e termina in corrispondenza del primo elemento.The Array is searched backward starting at startIndex and ending at the first element.

Il Predicate<T> è un delegato a un metodo che restituisce true se l'oggetto passato a esso corrisponde alle condizioni definite nel delegato.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Gli elementi di array vengono passati singolarmente al Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Questo metodo è un'operazione O (n), dove n è il numero di elementi dall'inizio di array a startIndex.This method is an O(n) operation, where n is the number of elements from the beginning of array to startIndex.

Vedi anche

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

Cerca un elemento che soddisfi le condizioni definite nel predicato specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi dell'oggetto Array che contiene il numero indicato di elementi e termina in corrispondenza dell'indice specificato.Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

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

Parametri di tipo

T

Tipo degli elementi della matrice.The type of the elements of the array.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.The one-dimensional, zero-based Array to search.

startIndex
Int32 Int32 Int32 Int32

Indice iniziale in base zero della ricerca all'indietro.The zero-based starting index of the backward search.

count
Int32 Int32 Int32 Int32

Numero di elementi nella sezione in cui eseguire la ricerca.The number of elements in the section to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.The Predicate<T> that defines the conditions of the element to search for.

Restituisce

Indice in base zero dell'ultima occorrenza di un elemento che corrisponde alle condizioni definite in match, se presente; in caso contrario, -1.The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Eccezioni

array è null.array is null.

-oppure--or- match è null.match is null.

startIndex non è compreso nell'intervallo di indici validi per array.startIndex is outside the range of valid indexes for array.

In alternativa-or- count è minore di zero.count is less than zero.

-oppure--or- startIndex e count non specificano una sezione valida in array.startIndex and count do not specify a valid section in array.

Esempi

Nell'esempio di codice seguente vengono illustrati tutti e tre gli overload del metodo generico FindLastIndex.The following code example demonstrates all three overloads of the FindLastIndex generic method. Viene creata una matrice di stringhe che contiene 8 nomi di dinosauri, due dei quali (nelle posizioni 1 e 5) terminano con "saurus".An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". Nell'esempio di codice viene definito anche un metodo del predicato di ricerca denominato EndsWithSaurus, che accetta un parametro di stringa e restituisce un valore booleano che indica se la stringa di input termina in "saurus".The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".

L'overload del metodo FindLastIndex<T>(T[], Predicate<T>) attraversa la matrice indietro rispetto alla fine, passando ogni elemento a sua volta al metodo EndsWithSaurus.The FindLastIndex<T>(T[], Predicate<T>) method overload traverses the array backward from the end, passing each element in turn to the EndsWithSaurus method. La ricerca si interrompe quando il metodo EndsWithSaurus restituisce true per l'elemento nella posizione 5.The search stops when the EndsWithSaurus method returns true for the element at position 5.

Nota

In C# e Visual Basic non è necessario creare in modo esplicito il delegato Predicate<string> (Predicate(Of String) in Visual Basic).In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. Questi linguaggi deducono il delegato corretto dal contesto e lo creano automaticamente.These languages infer the correct delegate from context and create it automatically.

L'overload del metodo FindLastIndex<T>(T[], Int32, Predicate<T>) viene usato per eseguire la ricerca nella matrice a partire dalla posizione 4 e continuare fino all'inizio della matrice.The FindLastIndex<T>(T[], Int32, Predicate<T>) method overload is used to search the array beginning at position 4 and continuing backward to the beginning of the array. Trova l'elemento in corrispondenza della posizione 1.It finds the element at position 1. Infine, viene utilizzato l'overload del metodo FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) per eseguire una ricerca nell'intervallo di tre elementi a partire dalla posizione 4 e lavorare a ritroso (ovvero gli elementi 4, 3 e 2).Finally, the FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) method overload is used to search the range of three elements beginning at position 4 and working backward (that is, elements 4, 3, and 2). Restituisce-1 perché nell'intervallo non sono presenti nomi di dinosauri che terminano con "saurus".It returns -1 because there are no dinosaur names in that range that end with "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
 */
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

Commenti

Il Array viene cercato a ritroso a partire da startIndex e termina in corrispondenza di startIndex meno count più 1, se count è maggiore di 0.The Array is searched backward starting at startIndex and ending at startIndex minus count plus 1, if count is greater than 0.

Il Predicate<T> è un delegato a un metodo che restituisce true se l'oggetto passato a esso corrisponde alle condizioni definite nel delegato.The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. Gli elementi di array vengono passati singolarmente al Predicate<T>.The elements of array are individually passed to the Predicate<T>.

Questo metodo è un'operazione O (n), in cui n è count.This method is an O(n) operation, where n is count.

Vedi anche

Si applica a