المفوضات والأحداث
تعلّم كيف تتيح المفوضات والأحداث التواصل بين الكائنات في C#
المفوضات والأحداث درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 5 من أصل 6. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 6 دروس في المجموع.
المفوضات والأحداث
مرحبًا بك في الدرس التالي! في هذا الدرس، ستتعلم عن المفوضات والأحداث في C#، والغرض منها، وكيف تتيح البرمجة المبنية على الأحداث. لنبدأ!

ما المفوض؟
المفوض هو نوع يمثل مرجعًا إلى أسلوب. ويسمح بتمرير الأساليب كمعلمات واستدعائها ديناميكيًا.
نقطة مهمة: المفوضات أساسية لتنفيذ الأحداث ودوال رد الاتصال في C#.
تعريف المفوضات واستخدامها
لتعريف مفوض، استخدم الكلمة الأساسية delegate. مثال:
using System;
class Program {
// Define a delegate
public delegate void MessageDelegate(string message);
static void DisplayMessage(string message) {
Console.WriteLine(message);
}
static void Main() {
// Create a delegate instance
MessageDelegate msg = DisplayMessage;
// Invoke the delegate
msg("Hello, Delegates!");
}
}
المفوضات متعددة الإرسال
يمكن لمفوض واحد الإشارة إلى عدة أساليب، وسيُستدعى كل أسلوب منها بالترتيب. مثال:
تلميح: استخدم المفوضات متعددة الإرسال في الحالات التي تتطلب تنفيذ إجراءات متعددة.
using System;
class Program {
public delegate void MessageDelegate(string message);
static void ShowMessage(string message) {
Console.WriteLine("Message: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
static void Main() {
MessageDelegate msg = ShowMessage;
msg += LogMessage; // Add another method
msg("Hello, Multicast Delegates!"); // Both methods are invoked
}
}
ما الحدث؟
الحدث هو آلية تسمح لفئة بإخطار الفئات أو الكائنات الأخرى عند وقوع أمر مهم. وتُبنى الأحداث على المفوضات.
نقطة مهمة: تتيح الأحداث اقترانًا منخفضًا بين الناشرين والمشتركين في البرمجة المبنية على الأحداث.
تعريف الأحداث واستخدامها
لتعريف حدث، استخدم الكلمة الأساسية event مع نوع مفوض. مثال:
نقطة مهمة: تتيح لك الأحداث بناء أنظمة تفاعلية ومبنية على الأحداث.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify; // Define an event
public void RaiseEvent(string message) {
Notify?.Invoke(message); // Invoke the event
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe to the event
pub.RaiseEvent("Hello, Events!"); // Raise the event
}
}
إلغاء الاشتراك في الأحداث
يمكن للمشتركين إلغاء اشتراكهم في الأحداث باستخدام العامل -=`. مثال:
تلميح: ألغِ الاشتراك في الأحداث دائمًا لتجنب تسرّب الذاكرة.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify;
public void RaiseEvent(string message) {
Notify?.Invoke(message);
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe
pub.RaiseEvent("First Message");
pub.Notify -= sub.OnNotify; // Unsubscribe
pub.RaiseEvent("Second Message"); // No output, as subscriber is removed
}
}
تحدي تدريبي
أنشئ مفوضًا باسم CalculationDelegate للعمليات الحسابية، وحدثًا باسم OnCalculate. اكتب برنامجًا يطلق الحدث وينفذ العمليات الحسابية. مثال:
using System;
class Calculator {
public delegate void CalculationDelegate(double result);
public event CalculationDelegate OnCalculate;
public void Add(double a, double b) {
double result = a + b;
OnCalculate?.Invoke(result);
}
}
class Program {
static void Main() {
Calculator calc = new Calculator();
// Subscribe to the event
calc.OnCalculate += result => Console.WriteLine("Result: " + result);
calc.Add(5, 3); // Outputs: Result: 8
}
}
أحسنت
تهانينا! لقد تعلمت كيفية استخدام المفوضات والأحداث لبناء برامج ديناميكية ومبنية على الأحداث. في الدرس التالي، سنستكشف التعامل مع المجموعات مثل القوائم والقواميس وقوائم الانتظار. واصل البرمجة!

تعلم C# مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 93
- الدروس
- 346
الأسئلة الشائعة
هل درس «المفوضات والأحداث» مجاني؟
نعم — نص درس «المفوضات والأحداث» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 6 دروس في المجموع.
ماذا ستتعلم في «المفوضات والأحداث»؟
تعلّم كيف تتيح المفوضات والأحداث التواصل بين الكائنات في C# تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 5 من أصل 6.
كم من الوقت يستغرق درس «المفوضات والأحداث»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى الواجهات
- الفئات المجرّدة
- الأعضاء والأساليب الساكنة
- استكشاف التعدادات والبُنى
- المفوضات والأحداث
- العمل مع مجموعات البيانات: القوائم والقواميس وقوائم الانتظار