51 lines
2.8 KiB
Markdown
51 lines
2.8 KiB
Markdown
|
---
|
||
|
title: Delegates
|
||
|
localeTitle: المندوبين
|
||
|
---
|
||
|
## المندوبين
|
||
|
|
||
|
يمثل AC # delegate إشارة إلى أسلوب له مجموعة معينة من المعلمات ونوع إرجاع معين. عند إنشاء المفوض ، يمكنك إقرانه أي طريقة متوافقة مع نوع المندوب: لديها نفس القدر من المعلمات ، كل منها من نفس النوع ونوع قيمة الإرجاع هو نفسه.
|
||
|
|
||
|
يمكنك إما استخدام أسلوب مثيل أو طريقة ثابتة عند تعيينها إلى مفوض.
|
||
|
|
||
|
يسمح لك المفوض بتمرير الأساليب كمعلمات إلى أساليب أخرى.
|
||
|
|
||
|
يتم استخدام المندوبين غالبًا لتنفيذ وظائف رد الاتصال. المثال الأكثر نموذجية هي معالجات الأحداث: تقوم بالتسجيل طريقة يتم تسميتها عند حدوث حدث معين (يتم النقر فوق زر الماوس ، على سبيل المثال).
|
||
|
|
||
|
### شرح قصير للمطورين
|
||
|
|
||
|
تشبه المندوبين مؤشرات الدالة في لغات C مثل C أو C ++. ومع ذلك ، فهي آمنة نوع. على عكس المؤشرات وظيفة بسيطة هم تحتوي على معلومات حول مثيل الكائن الذي سيتم استدعاء أسلوبه عند استدعاء المفوض ، ويكون له تدقيق صارم في نوع الحجج وقيمة إرجاع الدالة.
|
||
|
|
||
|
## مثال
|
||
|
|
||
|
تقوم بتعريف مفوض مشابه لكيفية الإعلان عن وظيفة ، ولكن إضافة الكلمة `delegate` . فمثلا:
|
||
|
|
||
|
` public delegate string StringOperation ( string s1, string s2 );
|
||
|
`
|
||
|
|
||
|
يمكن تعيين أي أسلوب يأخذ `string` وترجيح `string` إلى متغير من هذا النوع المفوض.
|
||
|
|
||
|
بعد إنشاء نوع التفويض ، يمكنك استخدامه تمامًا مثل أي نوع آخر. يمكنك الإعلان عن متغير محلي ، أعضاء فئة أخرى أو تمريرها كمعلمات لأساليب أخرى.
|
||
|
|
||
|
` StringOperation a;
|
||
|
`
|
||
|
|
||
|
قبل استدعاء المفوض ، ستحتاج إلى تعيين قيمة له. لنفترض أن لدينا طريقة تسلسلية لديها التنفيذ التالي:
|
||
|
|
||
|
` private string Concatenate ( string one, string two ) {
|
||
|
return one + " " + two;
|
||
|
}
|
||
|
`
|
||
|
|
||
|
يمكنك بعد ذلك تعيين هذا للمتغير المفوض واستدعائه كدالة.
|
||
|
|
||
|
` StringOperation op = Concatenate;
|
||
|
|
||
|
string result = op("Hello", "World");
|
||
|
|
||
|
Console.WriteLine ( result ); // print "Hello World" to the console
|
||
|
`
|
||
|
|
||
|
## معلومات اكثر
|
||
|
|
||
|
قراءة المزيد عن المندوبين [هنا](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/) .
|