ما الفرق بين Func وAction وPredicate في C#؟ ومتى نستخدم كلًا منها؟
مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في تعلم C# وصادفت المفوضين المدمجين: Func وAction وPredicate. يبدو أنهم جميعًا متشابهون — إنهم نوع من المفوضين العامين، لكني أرتبك في متى أستخدم أيًا منهم.
أفهم أنهم جميعًا يسمحون بتمرير الدوال كمعاملات، لكن التوقيعات مختلفة. على سبيل المثال، رأيت هذا الكود:
Func<int, int, int> add = (x, y) => x + y;
Action<string> print = s => Console.WriteLine(s);
Predicate<int> isEven = x => x % 2 == 0;
يبدو أن الثلاثة يقبلون معاملات ويقومون بشيء ما. لكن لماذا يُستخدم Predicate للتحقق من الزوجية بدلاً من Func<int, bool>؟ ولماذا نحتاج إلى Action أصلًا إذا كان بإمكاننا استخدام Func مع نوع إرجاع void؟