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/) . |