English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يحتوي C# على أنواع إرسال عامة مدمجة مثل Func وAction، لذا في معظم الحالات لا تحتاج إلى تعريف إرسال مخصص يدويًا.
Func هو إرسال عام في مساحة System ويكون لديه صفر أو أكثر من معادلات إدخال ومعادلة خروج واحدة خروج المعادلات. المعادلة الأخيرة تعتبر معادلة خروج
إرسال Func يمثل إرسال يحتوي على نوع عودة
Func تعريف في مساحة System يحدد معادلة إدخال واحدة ومعادلة خروج واحدة إرسال، كما هو موضح أدناه:
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
الآخر الأخير في尖括يات <> يعتبر نوع العودة، والباقي يعتبر أنواع معادلات الإدخال، كما هو موضح في الشكل التالي.
سيكون التابع التالي لـ 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 يجب أن يكون هناك ما لا يقل عن 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 (متنوعة) والنوع المطلوب هو دالة عائدة.
يمكنك استخدام كلمة المفتاح delegate لتحديد طريقة غير معروفة لتعيينها لدالة Func.
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
يمكن استخدام دالة Func مع تعبير Lambda أيضًا، كما يلي:
Func<int> getRandomNumber = () => new Random().Next(1, 100); //أو Func<int, int, int> Sum = (x, y) => x + y;
Func هو نوع مستقدم مدمج.
يجب أن يكون نوع المستقدم Func يعود قيمة.
يمكن أن يكون لدي نوع المستقدم Func من 0 إلى 16 معرفات مدخلة.
لا يسمح نوع المستقدم Func باستخدام معرفات ref و out.
يمكن استخدام نوع المستقدم Func مع métodos مجهولة أو lambdas.