Junior — Middle
Come distinguere un delegato di tipo Predicate da un delegato di tipo Func, e quali sono le loro principali differenze?
sobes.tech AI
Risposta dell'AI
La differenza principale tra i delegati Predicate e Func in C# risiede nelle loro firme e scopi:
-
Predicate<T> — è un delegato che accetta un parametro di tipo T e restituisce un bool. Viene usato per verificare una condizione (predicato) su un oggetto.
-
Func<T, TResult> — è un delegato generico che accetta un parametro di tipo T e restituisce un valore di tipo TResult. Func è più versatile, poiché TResult può essere di qualsiasi tipo.
Se Func restituisce bool e accetta un solo parametro, è funzionalmente equivalente a Predicate.
Esempio:
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Pertanto, Predicate è un delegato specializzato per le condizioni, mentre Func è un delegato universale per le funzioni con valore di ritorno.