Sobes.tech
Junior — Middle

Predicate түрүндөгү делегатты Func түрүндөгү делегаттан кантип айырмалап, алардын негизги айырмачылыктары эмнеде?

sobes.tech AI

AIден жооп

C# тілінде Predicate және Func делегаттарының арасындағы негізгі айырмашылық олардың қолтаңбаларында және мақсатындығында:

  • 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 — қайтарым мәні бар функциялар үшін әмбебап делегат болып табылады.