Sobes.tech
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 е универсален делегат за функции с връщана стойност.