Sobes.tech
Junior — Middle

Hogyan különböztetjük meg a Predicate típusú delegáltat a Func típusú delegáltól, és mik a fő különbségek?

sobes.tech MI

Válasz az MI-től

A Predicate és a Func delegáltak közötti fő különbség C#-ban azok aláírásában és céljában rejlik:

  • Predicate<T> — egy delegált, amely egy T típusú paramétert fogad és bool értéket ad vissza. Ezt az objektumon belüli feltétel (predikátum) ellenőrzésére használják.

  • Func<T, TResult> — egy általános delegált, amely egy T típusú paramétert fogad és egy TResult típusú értéket ad vissza. A Func sokoldalúbb, mivel a TResult bármilyen típus lehet.

Ha a Func bool értéket ad vissza és egy paramétert fogad, akkor funkcionálisan egyenértékű a Predicate-tel.

Példa:

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

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

Így a Predicate egy speciális delegált a feltételekhez, míg a Func egy általános delegált a visszatérési értékkel rendelkező függvényekhez.