Esporta (0) Stampa
Espandi tutto

Metodo List.FindLast

Cerca un elemento che corrisponda alle condizioni definite dal predicato specificato e restituisce l'ultima occorrenza nell'intera classe List.

Spazio dei nomi: System.Collections.Generic
Assembly: mscorlib (in mscorlib.dll)

public T FindLast (
	Predicate<T> match
)
public T FindLast (
	Predicate<T> match
)
public function FindLast (
	match : Predicate<T>
) : T
Non applicabile.

Parametri

match

Delegato Predicate che definisce le condizioni dell'elemento da cercare.

Valore restituito

L'ultimo elemento che corrisponde alle condizioni definite dal predicato specificato, se trovato; in caso contrario, il valore predefinito per il tipo T.

Tipo di eccezioneCondizione

ArgumentNullException

match è riferimento null (Nothing in Visual Basic).

Predicate è un delegato a un metodo che restituisce true se l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi dell'oggetto List corrente vengono passati singolarmente al delegato Predicate, spostandosi indietro in List, a partire dall'ultimo elemento e terminando con il primo elemento. L'elaborazione viene interrotta quando viene trovata una corrispondenza.

NotaImportante:

Durante la ricerca in un elenco contenente i tipi di valori, accertarsi che il valore predefinito per il tipo non soddisfi il predicato di ricerca. In caso contrario, non esiste alcun modo per effettuare una distinzione tra un valore predefinito indicante che non è stata trovata alcuna corrispondenza e un elemento di elenco che ha il valore predefinito per il tipo. Se il valore predefinito soddisfa il predicato di ricerca, utilizzare invece il metodo FindLastIndex.

Questo metodo esegue una ricerca lineare, pertanto è un'operazione O(n), dove n corrisponde a Count.

Nell'esempio di codice riportato di seguito vengono illustrati i metodi Find, FindLast e FindAll. Viene creato un oggetto List di stringhe contenente 8 nomi di dinosauri, due dei quali (in corrispondenza delle posizioni 1 e 5) terminano con "saurus". Nell'esempio di codice viene inoltre definito un metodo del predicato di ricerca denominato EndsWithSaurus, che accetta un parametro di stringa e restituisce un valore booleano indicante se la stringa di input termina con "saurus".

Il metodo Find consente di scorrere l'elenco dall'inizio, passando ciascun elemento a turno al metodo EndsWithSaurus. La ricerca si interrompe quando il metodo EndsWithSaurus restituisce true per l'elemento "Amargasaurus".

NotaNota:

In C# e Visual Basic, non è necessario creare il delegato Predicate<string> (Predicate(Of String) in Visual Basic) in modo esplicito. Questi linguaggi deducono il delegato corretto dal contesto e lo creano automaticamente.

Mediante il metodo FindLast la ricerca nell'elenco viene eseguita all'indietro partendo dalla fine. Viene trovato l'elemento "Dilophosaurus" in corrispondenza della posizione 5. Mediante il metodo FindAll viene restituito un oggetto List contenente tutti gli elementi che terminano con "saurus". Vengono visualizzati gli elementi.

Infine, mediante il metodo RemoveAll vengono rimosse tutte le voci che terminano con "saurus" e mediante il metodo Exists vengono mostrate tutte le stringhe che non sono visibili.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
            dinosaurs.TrueForAll(EndsWithSaurus));

        Console.WriteLine("\nFind(EndsWithSaurus): {0}", 
            dinosaurs.Find(EndsWithSaurus));

        Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
            dinosaurs.FindLast(EndsWithSaurus));

        Console.WriteLine("\nFindAll(EndsWithSaurus):");
        List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);

        foreach(string dinosaur in sublist)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\n{0} elements removed by RemoveAll(EndsWithSaurus).", 
            dinosaurs.RemoveAll(EndsWithSaurus));

        Console.WriteLine("\nList now contains:");
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nExists(EndsWithSaurus): {0}", 
            dinosaurs.Exists(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

TrueForAll(EndsWithSaurus): False

Find(EndsWithSaurus): Amargasaurus

FindLast(EndsWithSaurus): Dilophosaurus

FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus

2 elements removed by RemoveAll(EndsWithSaurus).

List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops

Exists(EndsWithSaurus): False
 */

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:

.NET Compact Framework

Supportato in:

XNA Framework

Supportato in:

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft