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.