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