Sobes.tech
Junior — Middle

Comment distinguer un délégué de type Predicate d'un délégué de type Func, et quelles sont leurs principales différences?

sobes.tech IA

Réponse de l'IA

La principale différence entre les délégués Predicate et Func en C# réside dans leurs signatures et leur but :

  • Predicate<T> — c'est un délégué qui prend un paramètre de type T et retourne un bool. Il est utilisé pour vérifier une condition (prédicat) sur un objet.

  • Func<T, TResult> — c'est un délégué générique qui prend un paramètre de type T et retourne une valeur de type TResult. Func est plus universel, car TResult peut être n'importe quel type.

Si Func retourne bool et prend un seul paramètre, il est fonctionnellement équivalent à Predicate.

Exemple :

Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;

bool result1 = isPositive(5);       // true
bool result2 = isPositiveFunc(5);   // true

Ainsi, Predicate est un délégué spécialisé pour les conditions, et Func est un délégué universel pour les fonctions avec valeur de retour.