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.