Un délégué de type générique intégré est un délégué de prédicat en C# qui est défini dans le système d'espace de noms. L'espace de noms et les méthodes contenant certains ensembles de critères peuvent être utilisés avec un délégué de prédicat pour déterminer si le paramètre transmis peut remplir ou non les critères donnés et une seule entrée est prise par ce critère renvoyant les valeurs vraies ou fausses et le délégué de prédicat est le même que les autres délégués délégué Func et délégué Action.
Syntaxe :
public delegate bool Predicate <in P>(P obj);
Où le type d'objet est représenté par P et obj est l'objet qui compare les critères définis dans une méthode et est représenté par un délégué de prédicat.
Travail du délégué de prédicat en C#
- Une fonction qui renvoie vrai ou faux est un prédicat et la référence à un prédicat est un délégué de prédicat.
- La fonctionnalité de délégué de prédicat a été introduite avec la sortie de .NET 2.0. cadre.
- La fonction de prédicat peut être définie et elle peut être transmise en tant que paramètre à toute autre fonction via le délégué de prédicat.
- Un cas particulier de Func est le délégué de prédicat qui ne prend qu'un seul paramètre en entrée et renvoie une valeur booléenne qui est vraie ou fausse.
- N'importe quelle méthode peut être écrite dans un délégué de prédicat, même l'expression d'une méthode lambda ou anonyme.
- Un type générique est pris comme argument par le délégué du prédicat lorsqu'il est utilisé avec l'expression de lambda.
Exemples de prédicat C#
Vous trouverez ci-dessous les exemples mentionnés :
Exemple n°1
Programme C# pour démontrer l'utilisation du délégué de prédicat dans un programme pour vérifier si la chaîne donnée passée en paramètre est en majuscules ou non.
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);
}
}
}
Sortie :
Explication :
- Dans le programme ci-dessus, un espace de noms appelé programme est défini. Ensuite, une classe appelée check est définie. Ensuite, une méthode booléenne est définie pour vérifier si la chaîne donnée est écrite en majuscules ou non. Si la chaîne donnée est écrite en majuscules, true est renvoyé sinon False est renvoyé. Ensuite, la méthode principale est appelée.
- Ensuite, un délégué de prédicat est défini avec un type d'objet sous forme de chaîne et IsUC est un objet qui compare les critères définis dans une méthode et est représenté par un délégué de prédicat. Ensuite, le résultat du délégué de prédicat est stocké dans une variable appelée res. Ensuite, le résultat est affiché.
Exemple n°2
Programme C# pour démontrer l'utilisation du délégué de prédicat dans un programme pour vérifier si la longueur de la chaîne donnée est inférieure ou non à une valeur spécifiée.
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"));
}
}
Sortie :
Explication :
- Dans le programme ci-dessus, une classe appelée programme est définie. Ensuite, un délégué de prédicat est défini avec le type d'objet sous forme de chaîne. Ensuite, une méthode est définie à l'intérieur d'un délégué de prédicat en passant l'objet en paramètre pour vérifier si la longueur de la chaîne donnée est inférieure à une valeur spécifiée. Si la longueur de la chaîne est inférieure à la valeur spécifiée donnée, true est renvoyé, sinon false est renvoyé.
- Ensuite, la méthode Main est appelée. Ensuite, un délégué de prédicat est défini avec un type d'objet sous forme de chaîne et fun est un objet qui compare les critères définis dans une méthode et est représenté par un délégué de prédicat. Ensuite, la chaîne à passer en paramètre au délégué de prédicat est enfin écrite.
Avantages
Vous trouverez ci-dessous les avantages du prédicat C# :
- Les délégués Predicate sont utiles lorsque nous devons filtrer une liste de valeurs.
- Les délégués de prédicat peuvent être créés en ligne pour une fonction de recherche unique.
- Les délégués de prédicat peuvent être utilisés lorsque nous devons rechercher des éléments dans une collection générique.
- En utilisant des délégués de prédicat, la longueur du code est raccourcie et vrai ou faux est renvoyé.
- Méthodes anonymes, l'expression de lambda peut être attribuée aux délégués du prédicat.
- Les délégués de prédicat fournissent la logique au moment de l'exécution et il peut s'agir d'une logique simple ou d'une logique compliquée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn