Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Predicate<T>-Delegat

Stellt die Methode dar, die einen Satz von Kriterien definiert und bestimmt, ob das angegebene Objekt jene Kriterien erfüllt.

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

public delegate bool Predicate<in T>(
	T obj
)

Typparameter

in T

Der Typ des zu vergleichenden Objekts.

Dieser Typparameter ist Contravariant. Das heißt, Sie können entweder den angegebenen Typ oder einen weniger abgeleiteten Typ verwenden. Weitere Informationen zu Ko- und Kontravarianz finden Sie unter Kovarianz und Kontravarianz in Generika.

Parameter

obj
Typ: T
Das Objekt, das mit den Kriterien verglichen werden soll, die innerhalb der durch diesen Delegaten dargestellten Methode definiert sind.

Rückgabewert

Typ: System.Boolean
true , wenn obj die innerhalb der durch diesen Delegaten dargestellten Methode definierten Kriterien erfüllt, andernfalls false.

Dieser Delegat wird von mehreren Methoden der Array-Klassen und der List<T>-Klassen verwendet, um nach Elementen in der Auflistung zu suchen.

Im folgenden Codebeispiel wird ein Predicate<T>-Delegat mit der Array.Find<T>-Methode verwendet, um ein Array der Point-Strukturen zu suchen. Die Methode, die der Delegat darstellt, ProductGT10, gibt true zurück, wenn das Produkt des X-Felds und des Y-Felds größer als 100.000 ist. Die Find<T>-Methode ruft den Delegaten zu jedem Element des Arrays auf und hält am ersten Punkt, der die Testbedingung erfüllt.

HinweisHinweis

Benutzer von Visual Basic und C# müssen den Delegaten nicht explizit erstellen und das Typargument der generischen Methode nicht angeben. Die Compiler bestimmen die notwendigen Typen von den angegebenen Methodenargumenten.


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) };

        // To find the first Point structure for which X times Y 
        // is greater than 100000, pass the array and a delegate
        // that represents the ProductGT10 method to the static 
        // Find method of the Array class. 
        Point first = Array.Find(points, ProductGT10);

        // Note that you do not need to create the delegate 
        // explicitly, or to specify the type parameter of the 
        // generic method, because the C# compiler has enough
        // context to determine that information for you.

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

    // This method implements the test condition for the Find
    // method.
    private static bool ProductGT10(Point p)
    {
        if (p.X * p.Y > 100000)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Found: X = 275, Y = 395
 */


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Anzeigen: