Sobes.tech
Junior — Middle

Cum se deosebește un delegate de tip Predicate de un delegate de tip Func, și care sunt principalele lor diferențe?

sobes.tech AI

Răspuns de la AI

Diferența principală dintre delegații Predicate și Func în C# constă în semnăturile și scopurile lor:

  • Predicate<T> — este un delegat care acceptă un parametru de tip T și returnează un bool. Este utilizat pentru verificarea unei condiții (predicat) asupra unui obiect.

  • Func<T, TResult> — este un delegat generic care acceptă un parametru de tip T și returnează o valoare de tip TResult. Func este mai versatil, deoarece TResult poate fi orice tip.

Dacă Func returnează bool și acceptă un singur parametru, este echivalent funcțional cu Predicate.

Exemplu:

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

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

Prin urmare, Predicate este un delegat specializat pentru condiții, iar Func este un delegat universal pentru funcții cu valoare de întoarcere.