Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.Find<T>-Methode: (T[], Predicate<T>)

 

Veröffentlicht: Oktober 2016

Sucht nach einem Element, das die durch das angegebene Prädikat definierten Bedingungen erfüllt, und gibt das erste Vorkommen im gesamten Array zurück.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

array
Type: T[]

Das zu durchsuchende eindimensionale und nullbasierte Array.

match
Type: System.Predicate<T>

Das Prädikat, das die Bedingungen für das Element definiert, nach dem gesucht werden soll.

Rückgabewert

Type: T

Das erste Element, das die durch das angegebene Prädikat definierten Bedingungen erfüllt, sofern vorhanden, andernfalls der Standardwert für den Typ T.

Typparameter

T

Der Typ der Elemente des Arrays.

Exception Condition
ArgumentNullException

array ist null.

- oder -

match ist null.

Die Predicate<T> ist ein Delegat einer Methode oder einen Lambda-Ausdruck, der zurückgibt true an das Objekt übergeben sie die Bedingungen der Delegat oder Lambda-Ausdruck übereinstimmt. Die Elemente der array einzeln übergeben werden, um die Predicate<T>, beginnend mit dem ersten Element und endend mit dem letzten Element. Die Verarbeitung wird beendet, wenn eine Übereinstimmung gefunden wird.

Diese Methode ist eine O (n)-Vorgang, in dem n ist die Length der array.

Im folgenden Beispiel wird eine Predicate<T> mit Delegieren der Find<T> generischen Methode ein Array von Suchen Point Strukturen. Die Methode, die der Delegat darstellt, ProductGT10, gibt true , wenn das Produkt der X- und Y-Felder größer als 100.000 ist. Die Find<T> Methode ruft den Delegaten für jedes Element des Arrays zurückgeben des ersten Punkts, der die testbedingung erfüllt.

System_CAPS_noteHinweis

Visual Basic- und C#-Benutzer keine explizit den Delegaten zu erstellen, oder geben Sie das Typargument der aufgerufenen generischen Methode. Die Compiler bestimmen die erforderlichen Typen über die Argumente der Methode, die Sie angeben.

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

Anstatt explizit definiert eine Methode mit der Signatur, Instanziieren einer Predicate<T> delegieren und das Übergeben der Delegat, der die Find<T> -Methode, ist es üblich, einen Lambda-Ausdruck verwenden. Das folgende Beispiel ist identisch mit der vorherigen Ansicht identisch, jedoch einen Lambdaausdruck als verwendet den match Argument.

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: