Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Array.Find<T>(T[], Predicate<T>)

 

Data di pubblicazione: ottobre 2016

Cerca un elemento che soddisfi le condizioni definite nel predicato specificato e restituisce la prima occorrenza all'interno dell'intero oggetto Array.

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

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

Parametri

array
Type: T[]

Matrice unidimensionale in base zero in cui eseguire la ricerca.

match
Type: System.Predicate<T>

Predicato che definisce le condizioni dell'elemento da cercare.

Valore restituito

Type: T

Primo elemento che soddisfa le condizioni definite dal predicato specificato, se trovato; in caso contrario, viene restituito il valore predefinito del tipo T.

Parametri tipo

T

Tipo degli elementi della matrice.

Exception Condition
ArgumentNullException

array è null.

-oppure-

match è null.

Il Predicate<T> è un delegato di un metodo o un'espressione lambda che restituisce true se l'oggetto passato a corrisponda alle condizioni definite nel delegato o un'espressione lambda. Gli elementi di array vengono passati singolarmente per il Predicate<T>, a partire dal primo elemento e terminando con l'ultimo elemento. L'elaborazione viene arrestata quando viene trovata una corrispondenza.

Questo metodo è un'operazione O (n) operazione, in cui n è il Length di array.

Nell'esempio seguente viene utilizzato un Predicate<T> delegato con il Find<T> un metodo generico per cercare una matrice di Point strutture. Il metodo rappresentato dal delegato, ProductGT10, restituisce true se il prodotto dei campi X e Y è maggiore di 100.000. Il Find<T> metodo chiama il delegato per ogni elemento della matrice, restituendo il primo punto che soddisfa la condizione di test.

System_CAPS_noteNota

Gli utenti di c# e Visual Basic non dispone di creare il delegato in modo esplicito o specificare l'argomento di tipo del metodo generico. I compilatori determinano i tipi necessari dagli argomenti del metodo che è fornito.

using System;
using System.Drawing;

public class Example
{
    public static void Main()
    {
        // Create an array of five Point structures.
        Point[] points = { new Point(100, 200), 
            new Point(150, 250), new Point(250, 375), 
            new Point(275, 395), new Point(295, 450) };

        // Find the first Point structure for which X times Y 
        // is greater than 100000. 
        Point first = Array.Find(points, ProductGT10);

        // Display the first structure found.
        Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
    }

    // Return true if X times Y is greater than 100000.
    private static bool ProductGT10(Point p)
    {
        return p.X * p.Y > 100000;
    }
}
// The example displays the following output:
//       Found: X = 275, Y = 395

Anziché definire in modo esplicito un metodo con la firma necessaria, creare un'istanza di un Predicate<T> delegare e passa il delegato per il Find<T> (metodo), è solitamente si utilizza un'espressione lambda. L'esempio seguente è identico a quello precedente, ad eccezione del fatto che viene utilizzata un'espressione lambda come il match argomento.

using System;
using System.Drawing;

public class Example
{
    public static void Main()
    {
        // Create an array of five Point structures.
        Point[] points = { new Point(100, 200), 
            new Point(150, 250), new Point(250, 375), 
            new Point(275, 395), new Point(295, 450) };

        // Find the first Point structure for which X times Y 
        // is greater than 100000. 
        Point first = Array.Find(points, p => p.X * p.Y > 100000);

        // Display the first structure found.
        Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
    }
}
// The example displays the following output:
//       Found: X = 275, Y = 395

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 2.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: