Sobes.tech
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.