Sobes.tech
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.