Junior — Middle
Kaip atskirti Predicate tipo delegatą nuo Func tipo delegato, ir kokios yra jų pagrindinės skirtumai?
sobes.tech AI
Atsakymas iš AI
Pagrindinis skirtumas tarp Predicate ir Func delegatų C# yra jų parašai ir paskirtis:
-
Predicate<T> — tai delegatas, kuris priima vieną T tipo parametrą ir grąžina bool. Naudojamas sąlygos (predikato) patikrinimui objekto atžvilgiu.
-
Func<T, TResult> — tai bendras delegatas, kuris priima T tipo parametrą ir grąžina TResult tipo reikšmę. Func yra lankstesnis, nes TResult gali būti bet koks tipas.
Jei Func grąžina bool ir priima vieną parametrą, jis funkcionaliai yra lygiavertis Predicate.
Pavyzdys:
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Taigi, Predicate yra specializuotas delegatas sąlygoms, o Func yra universalus delegatas funkcijoms su grąžinamosios vertės reikšme.