Ein integrierter generischer Typdelegat ist ein Prädikatdelegat in C#, der unter dem Namespace-System definiert ist. Der Namespace und die Methoden, die einen bestimmten Satz von Kriterien enthalten, können mit dem Prädikat-Delegaten gearbeitet werden, um zu bestimmen, ob der übergebene Parameter die angegebenen Kriterien erfüllen kann oder nicht, und nur eine Eingabe wird von diesem Kriterium übernommen, das die Werte entweder wahr oder falsch und den Prädikat-Delegierten zurückgibt ist mit den anderen Delegaten Func-Delegat und Aktionsdelegat identisch.
Syntax:
public delegate bool Predicate <in P>(P obj);
Wobei der Objekttyp durch P dargestellt wird und obj das Objekt ist, das die in einer Methode definierten Kriterien vergleicht und durch das Prädikatdelegaten dargestellt wird.
Funktionsweise von Predicate Delegate in C#
- Eine Funktion, die wahr oder falsch zurückgibt, ist ein Prädikat und der Verweis auf ein Prädikat ist ein Prädikatdelegat.
- Die Funktion des Prädikatdelegierten wurde mit der Veröffentlichung von .NET 2.0 eingeführt. Rahmen.
- Die Prädikatfunktion kann definiert und als Parameter an jede andere Funktion über den Prädikatdelegaten übergeben werden.
- Ein Sonderfall von Func ist der Prädikat-Delegat, der nur einen Parameter als Eingabe akzeptiert und einen booleschen Wert zurückgibt, der entweder wahr oder falsch ist.
- Jede Methode kann in einen Prädikatdelegaten geschrieben werden, sogar der Ausdruck einer Lambda- oder anonymen Methode.
- Ein generischer Typ wird vom Prädikatdelegierten als Argument verwendet, wenn er mit dem Ausdruck Lambda verwendet wird.
Beispiele für C#-Prädikat
Im Folgenden finden Sie die genannten Beispiele:
Beispiel #1
C#-Programm zur Demonstration der Verwendung des Prädikatdelegaten in einem Programm, um zu überprüfen, ob die als Parameter übergebene Zeichenfolge in Großbuchstaben geschrieben ist oder nicht.
Code:
using System;
//a namespace called program is defined
namespace program
{
//a class called check is defined
public class check
{
//a Boolean method is defined to check if the given string is written in capital letters or not. If written in capital letters, true is returned else False is returned.
static bool IsUC(string stri)
{
return stri.Equals(stri.ToUpper());
}
//main method is called
static void Main(string[] args)
{
//a predicate delegate is defined with object type as string and IsUC is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
Predicate<string> isU = IsUC;
//The result of the predicate delegate is stored in a variable called res
bool res = isU("welcome to c#");
//the result is displayed
Console.WriteLine(res);
}
}
}
Ausgabe:
Erklärung:
- Im obigen Programm ist ein Namespace namens Programm definiert. Dann wird eine Klasse namens check definiert. Anschließend wird eine boolesche Methode definiert, um zu prüfen, ob die angegebene Zeichenfolge in Großbuchstaben geschrieben ist oder nicht. Wenn die angegebene Zeichenfolge in Großbuchstaben geschrieben ist, wird „true“ zurückgegeben, andernfalls wird „False“ zurückgegeben. Dann wird die Hauptmethode aufgerufen.
- Dann wird ein Prädikat-Delegierter mit dem Objekttyp „String“ definiert und IsUC ist ein Objekt, das die Kriterien vergleicht, die innerhalb einer Methode definiert sind und durch den Prädikat-Delegierten dargestellt werden. Anschließend wird das Ergebnis des Prädikatdelegaten in einer Variablen namens res gespeichert. Anschließend wird das Ergebnis angezeigt.
Beispiel #2
C#-Programm zur Demonstration der Verwendung des Prädikatdelegierten in einem Programm, um zu überprüfen, ob die Länge der angegebenen Zeichenfolge kleiner als ein angegebener Wert ist oder nicht.
Code:
using System;
//a class called program is defined
class program
{
// a predicate delegate is defined with object type as string
public delegate bool my_del(string stri);
// a method is defined inside a predicate delegate by passing the object as parameter to check if the length of the given string is less than a specified value. If less than the given specified value, true is returned else false is returned
public static bool fun(string stri)
{
if (stri.Length < 5)
{
return true;
}
else
{
return false;
}
}
//Main method is called
static public void Main()
{
// a predicate delegate is defined with object type as string and fun is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
my_del obj = fun;
//The string to be passed as a parameter to predicate delegate is written here
Console.WriteLine(obj("Shobha"));
}
}
Ausgabe:
Erklärung:
- Im obigen Programm ist eine Klasse namens Programm definiert. Dann wird ein Prädikatdelegierter mit dem Objekttyp „String“ definiert. Anschließend wird eine Methode innerhalb eines Prädikatdelegierten definiert, indem das Objekt als Parameter übergeben wird, um zu prüfen, ob die Länge der angegebenen Zeichenfolge kleiner als ein angegebener Wert ist. Wenn die Länge der Zeichenfolge kleiner als der angegebene Wert ist, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben.
- Dann wird die Main-Methode aufgerufen. Dann wird ein Prädikat-Delegierter mit dem Objekttyp „String“ definiert und „Fun“ ist ein Objekt, das die in einer Methode definierten Kriterien vergleicht und durch den Prädikat-Delegierten dargestellt wird. Dann wird zuletzt die Zeichenfolge geschrieben, die als Parameter an den Prädikatsdelegierten übergeben werden soll.
Vorteile
Im Folgenden sind die Vorteile von C# Predicate aufgeführt:
- Die Prädikat-Delegaten sind nützlich, wenn wir eine Liste von Werten herausfiltern müssen.
- Die Prädikatsdelegierten können für eine einmalige Suchfunktion inline erstellt werden.
- Die Prädikatsdelegierten können verwendet werden, wenn wir nach Elementen in einer generischen Sammlung suchen müssen.
- Durch die Verwendung von Prädikat-Delegaten wird die Länge des Codes verkürzt und entweder wahr oder falsch zurückgegeben.
- Anonyme Methoden, Ausdruck von Lambda können Prädikatdelegierten zugewiesen werden.
- Die Prädikatsdelegierten stellen die Logik zur Laufzeit bereit und es kann eine einfache Logik oder eine komplizierte Logik sein.
Das obige ist der detaillierte Inhalt vonC#-Prädikat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn