161 votes

Délégués : Prédicat, action et fonction

Quelqu'un peut-il fournir une bonne explication (avec des exemples, si possible) de ces 3 délégués les plus importants ?

  • Prédicat
  • Action
  • Func

4voto

IntelligentBinary Points 103

Predicate, Func et Action sont des instances de délégués intégrées à .NET. Chacune de ces instances de délégué peut faire référence ou pointer vers des méthodes utilisateur avec une signature spécifique.

Délégué d'action - Les instances de délégué d'action peuvent pointer vers des méthodes qui prennent des arguments et renvoient un résultat nul.

Délégué Func - L'instance du délégué Func peut pointer vers une ou plusieurs méthodes qui prennent un nombre variable d'arguments et renvoient un certain type.

Prédicat - Les prédicats sont similaires aux instances de délégués func et ils peuvent pointer vers des méthodes qui prennent un nombre variable d'arguments et renvoient un type bool.

2voto

Action et Func avec lambda :

person p = new person();
Action<int, int> mydel = p.add;       /*(int a, int b) => { Console.WriteLine(a + b); };*/
Func<string, string> mydel1 = p.conc; /*(string s) => { return "hello" + s; };*/
mydel(2, 3);
string s1=  mydel1(" Akhil");
Console.WriteLine(s1);
Console.ReadLine();

2voto

Rm558 Points 1286

Func est plus convivial pour LINQ, peut être passé en paramètre. (sans point)

Le prédicat ne peut pas, il doit être enveloppé à nouveau.

Predicate<int> IsPositivePred = i => i > 0;
Func<int,bool> IsPositiveFunc = i => i > 0;

new []{2,-4}.Where(i=>IsPositivePred(i)); //Wrap again

new []{2,-4}.Where(IsPositivePred);  //Compile Error
new []{2,-4}.Where(IsPositiveFunc);  //Func as Parameter

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X