كيفية تمرير طريقة كمعامل لطريقة أخرى في C#؟
مرحباً بالجميع! لقد بدأت للتو في تعلم C# وواجهت هذه المشكلة. لدي عدة طرق تقوم بنفس الشيء تقريباً، ولكن مع اختلافات طفيفة في المنطق. على سبيل المثال، أريد تطبيق عملية ما على مصفوفة أرقام: إما جمع كل العناصر، أو ضربها، أو إيجاد القيمة القصوى. بدلاً من كتابة ثلاث حلقات منفصلة، أود كتابة طريقة واحدة عامة تأخذ "إجراءً" (طريقة أخرى) وتطبقه على المصفوفة.
حاولت القيام بذلك:
```csharp
public void ProcessArray(int[] numbers, ??? operation)
{
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = operation(numbers[i]);
}
}
```
لكني لا أعرف ماذا أكتب بدلاً من `???`. لقد سمعت عن المفوضين (Delegates)، لكني لا أفهم كيفية تعريفهم واستخدامهم بشكل صحيح. هل يمكنك التوضيح بمثال بسيط عن كيفية تمرير طريقة (مثل `int Square(int x)`) إلى طريقة أخرى؟
أيضاً، هل من الممكن تمرير طرق بعدد مختلف من المعاملات؟ وهل يوجد في C# الحديثة...