CodeShot
Seniorسختی 4 از ۵· در 65٪ مصاحبه‌های این حوزه پرسیده شده

تفاوت Delegate و Event چیست؟

نشان کردن

پاسخ کوتاه

Delegate اشاره‌گر Type-safe به یک متد است؛ Event لایه‌ای روی Delegate است که فقط اجازه Subscribe/Unsubscribe از بیرون کلاس را می‌دهد.

پاسخ کامل

Delegate هر جایی قابل Invoke است، اما Event فقط از داخل کلاسی که آن را تعریف کرده قابل Invoke است — از بیرون فقط می‌توان به آن Subscribe یا از آن Unsubscribe کرد؛ این کپسوله‌سازی امنیت بیشتری به الگوی Publisher/Subscriber می‌دهد.

اشتباه رایج

❌ عمومی (public) کردن یک Delegate به‌جای Event، که اجازه Invoke از هر جایی از کد را می‌دهد.