Sobes.tech
Junior — Middle

Kā atšķirt Predicate tipa deleģētu no Func tipa deleģēta, un kādas ir to galvenās atšķirības?

sobes.tech AI

Atbilde no AI

Galvenā atšķirība starp delegātiem Predicate un Func C# ir to parakstos un mērķis:

  • Predicate<T> — tas ir delegāts, kas pieņem vienu parametru no T tipa un atgriež bool. To izmanto nosacījuma (predikāta) pārbaudei objektā.

  • Func<T, TResult> — tas ir vispārējs delegāts, kas pieņem T tipa parametru un atgriež TResult tipu. Func ir daudzpusīgāks, jo TResult var būt jebkura tips.

Ja Func atgriež bool un pieņem vienu parametru, tas ir funkcionāli līdzvērtīgs Predicate.

Piemērs:

Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;

bool result1 = isPositive(5);       // true
bool result2 = isPositiveFunc(5);   // true

Tādējādi, Predicate ir specializēts delegāts nosacījumiem, bet Func ir universāls delegāts funkcijām ar atgriešanas vērtību.