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

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

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

C# منظم (OOP)

إرسال Func في C#

يحتوي C# على أنواع إرسال عامة مدمجة مثل Func وAction، لذا في معظم الحالات لا تحتاج إلى تعريف إرسال مخصص يدويًا.

Func هو إرسال عام في مساحة System ويكون لديه صفر أو أكثر من معادلات إدخال ومعادلة خروج واحدة خروج المعادلات. المعادلة الأخيرة تعتبر معادلة خروج

ما هو إرسال Func

إرسال Func يمثل إرسال يحتوي على نوع عودة

Func تعريف في مساحة System يحدد معادلة إدخال واحدة ومعادلة خروج واحدة إرسال، كما هو موضح أدناه:

namespace System
{    
    public delegate TResult Func<in T, out TResult>(T arg);
}

الآخر الأخير في尖括يات <> يعتبر نوع العودة، والباقي يعتبر أنواع معادلات الإدخال، كما هو موضح في الشكل التالي.

دالة Func

سيكون التابع التالي لـ Func مع مدخلين وأحداثين.

دالة Func

التالي يعتمد على دالة Func التي تأخذ مدخلين من نوع int وتعيد قيمة من نوع int:

Func<int, int, int> sum;

يمكنك تخصيص أي طريقة لـ func التابع الذي يحتوي على اثنين منintالمستخدمينintالقيمة.

class Program
{
    static int Sum(int x, int y)
    {
        return x + y;
    }
    static void Main(string[] args)
    {
        Func<int, int, int> add = Sum;
        int result = add(10, 10);
        Console.WriteLine(result); 
    }
}
الإخراج:
20

يمكن أن تشمل نوع دالة Func من 0 إلى 16 نوعًا مختلفًا من المدخلات. ولكن يجب أن يحتوي على مدخل للناتج. على سبيل المثال، لا يحتوي التابع التالي على أي مدخلات ويحتوي فقط على مدخل للناتج.

Func<int> getRandomNumber;

شرح مثال على دالة Func

  • Func يجب أن يكون هناك ما لا يقل عن 0 مدخلات، وأقصى 16 مدخل، يعتمد على النوع المطلوب. يجب أن يكون هناك عودة، لا يمكن أن يكون void.

  • Func<int> تعني أن المدخلات لا توجد، والنوع المطلوب هو دالة عائدة.

  • Func<object, string, int> تعني أن المدخلات هي object, string، والنوع المطلوب هو دالة عائدة.

  • Func<object, string, int> تعني أن المدخلات هي object, string، والنوع المطلوب هو دالة عائدة.

  • Func<T1, T2,, T3, int> تعني أن المدخلات هي T1, T2,, T3 (متنوعة) والنوع المطلوب هو دالة عائدة.

دالة Func في C# مع طريقة غير معروفة

يمكنك استخدام كلمة المفتاح delegate لتحديد طريقة غير معروفة لتعيينها لدالة Func.

Func<int> getRandomNumber = delegate()
                            {
                                Random rnd = new Random();
                                return rnd.Next(1, 100);
                            };

دالة Func في C# مع Lambda

يمكن استخدام دالة Func مع تعبير Lambda أيضًا، كما يلي:

Func<int> getRandomNumber = () => new Random().Next(1, 100);
//أو
Func<int, int, int> Sum = (x, y) => x + y;

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

  1. Func هو نوع مستقدم مدمج.

  2. يجب أن يكون نوع المستقدم Func يعود قيمة.

  3. يمكن أن يكون لدي نوع المستقدم Func من 0 إلى 16 معرفات مدخلة.

  4. لا يسمح نوع المستقدم Func باستخدام معرفات ref و out.

  5. يمكن استخدام نوع المستقدم Func مع métodos مجهولة أو lambdas.