الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقدمة عن خصائص ال Delegates

مغلق
بدأه a_elbadrawy في 11 يونيو 2007 · 5 رد · 2,391 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Why Delegates

- ستستخدم Delegates فى تدعيم وتشغيل ال Event

- الافضل انة يعطيك القدرة على مناداة Method لم تحددة وقت التصميم

ببساطة ال Delegates يقوم ب encapsulate ال Method فهو مؤشر لها ويمكنك مناداتها عن طريقة

وعلى الرغم ان ال Method ليست object لكنها ذات physical location فى الذاكرة وهذا ما يعطينا القدرة على التأشير عليها .

لتعريف الDelegates

delegate return-type name(Parameter-list);

يرجى مرعاة ان Return Type يجب ان يكون نفسة المستخدم مع ال Method محل التأشير وكذلك ال Parameter list

مثال:

لو افترضنا ان دى ال Method الى عايزين نعملها Delegate

public static string RemoveSpace(string s)
		{
			string Ts = "";
			for (int i = 0; i < s.Length; i++)
			{
				if (s != ' ') Ts += s;
			}
			return Ts;
		}

لاحظ ال Return Type و ال Parameter

هيكون ال Delegate بالشكل دة

public delegate string de(string s);

هننشأ ال Object بتاع ال Delegate ونعطية البارمتر الى هو ال Method ونعملة Invoke

 private void button26_Click(object sender, EventArgs e)
		{
			de Myde = new de(RemoveSpace);
			MessageBox.Show(Myde.Invoke(" I Love C# So Much"));
		}

خصائص--

-Method Group Conversion

الخاصية دى اضيفت مع C# 2.0 ومعناها ببساطة ادخال اسم ال Method مباشرة الى ال Delegate Name بدون استخدام new

		private void button26_Click(object sender, EventArgs e)
		{
			de Myde = RemoveSpace;
			MessageBox.Show(Myde.Invoke(" I Love C# So Much"));
		}

-Multicasting

الخاصية دى معناها انك تقدر تضيف اكتر من Method لنفس ال Delegate مدام لهم نفس ال Return type و ال Parameters عن طريق +=

		private void button29_Click(object sender, EventArgs e)
		{
//Method Name RemoveSpaceMulticasting
			devoid Myde = RemoveSpaceMulticasting;
			Myde += dg.replaceSpacesMulticasting;
			Myde("I Love C# SO Much");
			Myde -= dg.RemoveSpaceMulticasting;
			Myde("I Love C# SO Much");
		}

-Anonymous Methods

احياناً بتعمل Method خصيصاً للتأشير عليها لإرسال ال Delegate مثلاً ك Parameter ل Method اخرى او للاستفادة من Synchronization

ماذا لو قلت لك انة يمكنك تعريف ال Method الى جوار الموشر مباشرة

بإستخدام كلمة delegate ثم البارمتر ويلهم جسم الMethod نفسها وبعد غلق الاقواس ;

delegate(string s)
			{};

والكود

public delegate string deAnonymous(string s);

  private void button30_Click(object sender, EventArgs e)
		{
			deAnonymous dg = delegate(string s)
			{
				string Ts = "";
				for (int i = 0; i < s.Length; i++)
				{
					if (s != ' ') Ts += s;
				}
				return Ts;
			};
			MessageBox.Show(dg.Invoke("I Love C# So Much"));
		}

-Covariance and Contravariance

قلنا من قبل ان ال Return type بتاع ال Delegate لازم يكون مثل بتاع ال Method لكن الخاصية دى بغير الموقف شوية يعنى ممكن يكون Return بتاع ال Method يكون Drived Class من ال Return بتاع ال Delegate

فى آمان الله

1

Practice makes perfect 2007*

البرمجة بلا انطباعات

#2

ماشاء الله والله موضوع ال Delegation موضوع قيم وبحاجة لمزيد من المتابعة نظرا لأهميته ،، بارك الله فيك اخي العزيز على شروحاتك المبسطة :)

#3

اخي الفاضل اشكرك على هذا الموضوع والذي كنت ابحث عنه منذ فترة ..

ولكن لو تكرمت ان تبين لي ما هي Callback Methods .. وما علاقتها بال Delegates & Events.

ولك جزيل الشكر

#4

بارك الله فيك

يا أيها الناس قولو لا إله إلا الله تفلحوا وتملكوا بها العرب وتذل لكم العجم وإذا آمنتم كنتم ملوكا في الجنة

#5
marx كتب:
اخي الفاضل اشكرك على هذا الموضوع والذي كنت ابحث عنه منذ فترة ..

ولكن لو تكرمت ان تبين لي ما هي Callback Methods .. وما علاقتها بال Delegates & Events.

ولك جزيل الشكر

لو تكرمت اقرأ موضوعى

أساسيات Asynchronous

Practice makes perfect 2007*

البرمجة بلا انطباعات

#6

مشكور حبيبي على الشرح الوافي ماقصرت وتسلم على الموضوع ننتظر جديدك وياريت لو تقول اي معلومه تعرفها عن datagrid

لاني بصراحه مش فاهم فيها شي

لا اله الا الله عدد ماكان ولا اله الا الله عدد ماسيكون ولا اله الا الله عدد الحركات والسكون

66d3fff832.jpg

هذا الموضوع مغلق.

مواضيع مشابهة