English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات أساسية C#

تعليمات متقدمة C#

C# متوجه بالأهداف (OOP)

بروتوكول Action في C#

Action هو نوع بروتوكول تعميم تم تعريفه في مساحة الأسماء System. نوع البروتوكول التعميم Action هو نفسه مثل بروتوكول تعميم Func، باستثناء أن بروتوكول تعميم Action لا يعود أي شيء. بمعنى آخر، يمكن استخدام بروتوكول تعميم Action مع طرق العودة void.

ما هو بروتوكول Action التعميم

Action<T> هو بروتوكول تعميم مدمج في .NET Framework، يمكن استخدامه لتقديم إجراءات بروتوكول تعميم دون الحاجة إلى إعلان بروتوكول تعميم مخصص. يجب أن يتطابق الإجراء المدمج مع اسم البروتوكول التعميم المحدد. بمعنى آخر، يجب أن يكون لديه دالة واحدة يتم إرسالها إليها عن طريق التمرير بسلسلة القيمة ولا يمكن أن يكون لها أي عودة.

على سبيل المثال،يحوي هذا الوسيط على قيمة int ويقوم بطباعةها.

public delegate void Print(int val);
static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{           
    Print prnt = ConsolePrint;
    prnt(10);
}
الخروج:
10

يمكنك استخدام Action الوسيط بدلاً من وسيط Print المحدد مسبقًا،مثل:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{
    Action<int> printActionDel = ConsolePrint;
    printActionDel(10);
}

يمكنك استخدام كلمة المفتاح new أو تخصيص دالة مباشرة لتعريف Action الوسيط:

Action<int> printActionDel = ConsolePrint;
//أو
Action<int> printActionDel = new Action<int>(ConsolePrint);

يمكن لـ Action الوسيط استقبال على الأكثر 16 معاملًا من أنواع مختلفة.

Action الوسيط ودالة مجهولة

يمكن أيضًا تخصيص دالة مجهولة لـ Action الوسيط،مثل:

static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };
    printActionDel(10);
}
الخروج:
10

Action الوسيط وتعبير Lambda

يمكن أيضًا استخدام تعبير Lambda مع Action الوسيط:

static void Main(string[] args)
{
    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
}

لذلك،يمكنك استخدام أي دالة لا تستخدم نوع Action الوسيط كقيمة عائدة.

مثال على استخدام Action الوسيط

  • Action الوسيط يمكنه استقبال على الأقل 0 معامل،وحتى 16 معامل،بدون أي قيمة عائدة.

  • Action يعني وسيط بدون معاملات،بدون أي قيمة عائدة.

  • Action<int,string> يعني وسيط به معاملات int،string،بدون أي قيمة عائدة.

  • Action<int,string,bool> يعني وسيط به معاملات int،string،bool،بدون أي قيمة عائدة.

  • Action<int, int, int, int> تعني وكلاء لا يدخلون 4 معاملات من نوع int ولا يعودون بأي شيء.

مزايا وكلاء Action و Func

  1. تعريف الوكلاء بسهولة وسرعة.

  2. جعل الكود قصيرًا.

  3. النوع المتوافق في جميع أنحاء التطبيق.

النقاط التي يجب تذكرها

  1. وكلاء Action مشابهين لوكلاء Func، ولكن وكلاء Action لا يعودون بأي شيء. يجب أن يكون النوع العائد void.

  2. يمكن أن يكون لدي وكلاء Action من 0 إلى 16 معاملات.

  3. يمكن استخدام وكلاء Action مع الطريقة الغير معروفة أو التعبيرات lambda.