Junior — Middle
¿Cómo distinguir un delegado de tipo Predicate de un delegado de tipo Func, y cuáles son sus principales diferencias?
sobes.tech AI
Respuesta de la IA
La principal diferencia entre los delegados Predicate y Func en C# radica en sus firmas y propósitos:
-
Predicate<T> — es un delegado que toma un parámetro de tipo T y devuelve un bool. Se usa para verificar una condición (predicado) sobre un objeto.
-
Func<T, TResult> — es un delegado genérico que toma un parámetro de tipo T y devuelve un valor de tipo TResult. Func es más versátil, ya que TResult puede ser cualquier tipo.
Si Func devuelve bool y toma un solo parámetro, es funcionalmente equivalente a Predicate.
Ejemplo:
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Por lo tanto, Predicate es un delegado especializado para condiciones, y Func es un delegado universal para funciones con valor de retorno.