Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Array.Exists<T>

Determina se la matrice indicata contiene elementi che soddisfano le condizioni definite nel predicato specificato.

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

public static bool Exists<T>(
	T[] array,
	Predicate<T> match
)

Parametri di tipo

T

Tipo degli elementi della matrice.

Parametri

array
Tipo: T[]
Oggetto Array unidimensionale e in base zero in cui effettuare la ricerca.
match
Tipo: System.Predicate<T>
Oggetto Predicate<T> che definisce le condizioni degli elementi da cercare.

Valore restituito

Tipo: System.Boolean
true se la matrice array contiene uno o più elementi che soddisfano le condizioni definite dal predicato specificato; in caso contrario, false.

EccezioneCondizione
ArgumentNullException

array è null.

- oppure -

match è null.

Predicate<T> è un delegato a un metodo che restituisce true se l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi di array vengono passati singolarmente a Predicate<T> e l'elaborazione viene interrotta quando viene trovata una corrispondenza.

Questo metodo rappresenta un'operazione O(n), dove n è la proprietà Length di array.

Nell'esempio di codice riportato di seguito vengono illustrati il metodo generico Exists<T> e diversi altri metodi generici che utilizzano il delegato generico Predicate<T>.

Viene creata una matrice 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 Exists<T> viene interrotto e restituisce true in corrispondenza del primo elemento per il quale il metodo predicato restituisce true, in questo caso "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.

Il metodo generico TrueForAll<T> viene interrotto e restituisce false in corrispondenza del primo elemento per il quale il metodo predicato restituisce false.

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

Mediante il metodo generico FindLast<T> la ricerca nella matrice viene eseguita all'indietro partendo dalla fine. Trova l'elemento "Dilophosaurus" nella posizione 5. Il metodo generico FindAll<T> viene utilizzato per restituire una matrice che contiene tutti gli elementi che terminano in "saurus". Vengono visualizzati gli elementi.


using System;

public class DinoDiscoverySet
{
    public static void Main()
    {
        string[] dinosaurs =
        {
            "Compsognathus", "Amargasaurus", "Oviraptor",
            "Velociraptor",  "Deinonychus",  "Dilophosaurus",
            "Gallimimus",    "Triceratops"
        };

        DinoDiscoverySet GoMesozoic = new DinoDiscoverySet(dinosaurs);

        GoMesozoic.DiscoverAll();
        GoMesozoic.DiscoverByEnding("saurus");
    }

    private string[] dinosaurs;

    public DinoDiscoverySet(string[] items)
    {
        dinosaurs = items;
    }

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

    public void DiscoverByEnding(string Ending)
    {
        Predicate<string> dinoType;

        switch (Ending.ToLower())
        {
            case "raptor":
                dinoType = EndsWithRaptor;
                break;
            case "tops":
                dinoType = EndsWithTops;
                break;
            case "saurus":
            default:
                dinoType = EndsWithSaurus;
                break;
        }
        Console.WriteLine(
            "\nArray.Exists(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.Exists(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.TrueForAll(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.TrueForAll(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.Find(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.Find(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.FindLast(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.FindLast(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.FindAll(dinosaurs, \"{0}\"):", Ending);

        string[] subArray =
            Array.FindAll(dinosaurs, dinoType);

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

    // Search predicate returns true if a string ends in "saurus".
    private bool EndsWithSaurus(string s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    // Search predicate returns true if a string ends in "raptor".
    private bool EndsWithRaptor(String s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "raptor"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    // Search predicate returns true if a string ends in "tops".
    private bool EndsWithTops(String s)
    {
        if ((s.Length > 3) &&
            (s.Substring(s.Length - 4).ToLower() == "tops"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array.Exists(dinosaurs, "saurus"): True

Array.TrueForAll(dinosaurs, "saurus"): False

Array.Find(dinosaurs, "saurus"): Amargasaurus

Array.FindLast(dinosaurs, "saurus"): Dilophosaurus

Array.FindAll(dinosaurs, "saurus"):
Amargasaurus
Dilophosaurus
*/


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: 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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft