Junior — Middle
Как да различим делегат от тип Predicate от делегат от тип Func и какви са основните им разлики?
sobes.tech AI
Отговор от AI
Основната разлика между делегатите Predicate и Func в C# се състои в техните сигнатури и предназначение:
-
Predicate<T> — това е делегат, който приема един параметър от тип T и връща bool. Използва се за проверка на условие (предикат) върху обект.
-
Func<T, TResult> — това е обобщен делегат, който приема параметър от тип T и връща стойност от тип TResult. Func е по-гъвкав, тъй като TResult може да бъде всякакъв тип.
Ако Func връща bool и приема един параметър, той е функционално еквивалентен на Predicate.
Пример:
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Следователно, Predicate е специализиран делегат за условия, а Func е универсален делегат за функции с връщана стойност.