Sobes.tech
Junior — Middle

Kako razlikovati delegata tipa Predicate od delegata tipa Func, i koje su njihove glavne razlike?

sobes.tech АИ

Одговор од АИ

Glavna razlika između delegata Predicate i Func u C# je u njihovim potpisima i nameni:

  • Predicate<T> — delegat koji prihvata jedan parametar tipa T i vraća bool. Koristi se za proveru uslova (predikata) nad objektom.

  • Func<T, TResult> — generički delegat koji prihvata parametar tipa T i vraća vrednost tipa TResult. Func je svestraniji, jer TResult može biti bilo koji tip.

Ako Func vraća bool i prihvata jedan parametar, funkcionalno je ekvivalentan Predicate.

Primer:

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

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

Dakle, Predicate je specijalizovani delegat za uslove, dok je Func univerzalni delegat za funkcije sa povratnom vrednošću.