هذا أول درس عن ال delegate بعد ما وعدتكم به.
أرجو أن يحوز على رظاكم.
وشكراُ
أرجو التفاعل
هذا أول درس عن ال delegate بعد ما وعدتكم به.
أرجو أن يحوز على رظاكم.
وشكراُ
أرجو التفاعل
بالسنبة للملاحظة فهي غير صحيحية أبداً والتصريح يأخذ الشكل العام التالي:
;([attributes] [modifiers] delegate result-type identifier ([formal-parameters]
الـ attributes : خيارية.
الـ modifiers:
مثل: public , private ,internal,protected بالإضافة إلى الكلمة المفتاحية new.
الـ result-type:
هنا يكمن الجواب ليس بالضرورة أن تكون void. يمكن أن تكون من أي نمط.
الـ identifier: اسم الـ delgate
وأخيراً المتحولات
بالنسبة للتمرين فلم أفهم السؤال هل يمكن صياغيته بطريقة أخرى
وشكراً على المعلومات والجهد المبذول
إذا كان لا يلزم أن يكون viod نوع الإعادة فكيف يمكنني الحصول على القيم المعادة إذا كانت من نوع آخر.
بالنسبة للسؤال فإن المثال الأول استدعى ال delegate مرتين
أريد منكم استدعائة مرة واحدة في نفس المخرجات
ProcessBookDelegate myDelegate = new ProcessBookDelegate(PrintTitle); PriceTotaller totaller = new PriceTotaller(); myDelegate = myDelegate + new ProcessBookDelegate(totaller.AddBookToTotal) bookDB.ProcessPaperbackBooks(myDelegate);
بالنسبة لإمكانية إرجاع قيمة، بالطبع فهي مهمة جدا:
public delegete int GetValue()
class StrangeNumberGenerators{
static boolean flag=true;
public static int getRandomValue(){
return (int)Math.random()*6;
}
public static int getNonRandomValue(){
flag=!flag;
if(flag)return 3;else return 4;
}
public static int getSpicificValue(){
return 6;
}
}
public class Game{
public static void Main(){
Console.Write("Let Us Play");
GetValue valueDelegate = new GetValue(StrangeNumberGenerators.getRandomValue);
for(int i=0;i<10;i++){
printMessage(valueDelegate);
}
Console.Write("Let Us Play Again");
valueDelegate = new GetValue(StrangeNumberGenerators.getNonRandomValue);
for(int i=0;i<10;i++){
printMessage(valueDelegate);
}
Console.Write("Let Us Play Last Time");
valueDelegate = new GetValue(StrangeNumberGenerators.getSpicificValue);
for(int i=0;i<10;i++){
printMessage(valueDelegate);
}
}
public static void printMessage(GetValue value){
int number = value();
switch(number){
case 0: Console.Write("loss");
case 1: Console.Write("at least you got something");
case 2: Console.Write("nice");
case 3: Console.Write("you can do better");
case 4: Console.Write("are you lucky?");
case 5: Console.Write("you won!!!");
}
}
}جرب هذه وأخبرني بالنتائج... إن وجدت أخطاء فأصلحها،
بالتوفيق!!
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
الحل صحيح يا أبو مازن
وشكراً على الردود وسوف أجرب وأخبرك بالنتائج
تم تعديل هذه المشاركة بواسطة mossa في 16 أغسطس 2005 في 20:20
السلام عليكم ورحمة الله وبركاته
متشكرين جدا على هذا الجهد المبذول
لكن انا كان لي مجموعة أسئلة نظرية نفسي حد يجاوبني عليها باستيفاء
اولا - لماذا الdelegate نعتبر ها safe type
هل لأنها فقط تعتبر ref type وليست value type
ثانيا ماذا يحدث عندما انادي ال method عن طريق الdelegate او اناديها مباشرة
هل هذا فرق امني كبير
ارجو ان يشرح لي احدكم كيف يحدث ولا يعطيني مرجع لكيفية كتابة ال delegate
فانا اعرف ذلك جيدا والحمد لله
واتمنى أيضا أن يعطيني احدكم مثال لواقع او مشكلة عملية قامت بحلها ال delegate
ما عدا في ال event بالطبع
والسلام علكيم
السلام عليكم
اقتباسملحوظة (أرجوا أن تخبروني بها):سمعت أنه يجب عند استخدام ال Delegate متعدد الإجرائيات يجب أن يكون نوع الإعادة void. (هل هذا صحيح أم لا؟)
صحيح
فعلا ال multicast delegate يجب ان يكون نوع الاعاده void
والفائده من كون الdelegate بيكون safe type انه managed function pointer
بيكون هوه مسئول عن التعامل مع ال memory addresses
اظن حسب فكرتي عن الdelegate اهم فائده انه بيفصل تماما بين ال object اللي عمل fire لل event
وبين الobject اللي فيه الداله اللي هتعمل handle لل event
و ممكن قول تعريف بسيط لل delegate حسب تجربتي معاه
انه اسم ل function signature معين
لو فيه كلام غير صحيح في فكرتي عن الdelegate
انتظر التصحيح من الأخوه
بسم الله الرحمن الرحيم
اخي الكريم موضوعك مهم جدا ارجو اكماله ونحن معك ومتابعين والكثير سوف يستفيد وان لم يستفيدوا الان سوف يستفيدوا بعد فترة لان موضوعك سوف يكون مرجع عربي مهم في الانترنت
هذا الموضوع مغلق.