Delegate در سی شارپ
سه شنبه 12 آبان 1394در این مقاله درباره delegate صحبت کنیم Delegate یک نوع اشاره گر است که نشان دهنده reference یک متد است. دراینجا ما توضیح میدهیم که Delegate چیست.
در این مقاله درباره delegate در سی شارپ صحبت کنیم Delegate یک نوع اشاره گر است که نشان دهنده مرجع یک متد است. دراینجا ما توضیح میدهیم که Delegate چیست.
Delegate چیست؟
Delegate یک نوع اشاره گر است که دارای references به تابع است. Delegate بسیار شبیه به یک کلاس است چرا که می توانیم نمونه ای از Delegate ایجاد کنیم.
delegate میتواند شی باشد که شامل لیستی از متدهای یکسان(هم امضا و دارای مقادیر بازگشتی یکسان) باشد
دستور زیر نحوه ایجاد یک Delegate است.
public delegate int MyDelegate(int x, int y);
شما میتوانید متدهایی توسط نمونه ای از Delegate فراخوانی یا اجرا کنید.
using System; namespace ConsoleDemo { public delegate void SampleDelegate(string msg); public class Program { public static void Show(string message) { Console.WriteLine(message); } public static void Main(string[] args) { SampleDelegate objSampleDelegate = new SampleDelegate(Show); objSampleDelegate("Welcome to sample delegate"); Console.ReadLine(); } } }
using System; namespace ConsoleDemo { public delegate void SampleMulticastDelegate(); class Program { static void Main(string[] args) { SampleMulticastDelegate objDelegate1, objDelegate2, objDelegate3, objDelegate4; objDelegate1 = new SampleMulticastDelegate(Show1); objDelegate2 = new SampleMulticastDelegate(Show2); objDelegate3 = new SampleMulticastDelegate(Show3); objDelegate4 = objDelegate1 + objDelegate2 + objDelegate3; objDelegate4(); //Here del4 holding reference of 3 Show. Console.Read(); } public static void Show1() { Console.WriteLine("Show one is invoked"); } public static void Show2() { Console.WriteLine("Show two is invoked"); } public static void Show3() { Console.WriteLine("Show three is invoked"); } } }
using System; namespace ConsoleDemo { public delegate void SampleMulticastDelegate(); class Program { static void Main(string[] args) { SampleMulticastDelegate objDelegate = new SampleMulticastDelegate(Show1); objDelegate += Show2; objDelegate += Show3; objDelegate -= Show2; // Remove Show2 Method using - sign objDelegate(); Console.Read(); Console.Read(); } public static void Show1() { Console.WriteLine("Show one is invoked"); } public static void Show2() { Console.WriteLine("Show two is invoked"); } public static void Show3() { Console.WriteLine("Show three is invoked"); } } }
به لیستی از متدها Invocation List می گوییم. پس هر وقت نام این اصطلاح را شنیدیم باید بدانیم که منظور لیست متدهای موجود در Delegate است.
Multicast Delegate یک متد است که چند متد را در خود جای می دهد.
- C#.net
- 2k بازدید
- 5 تشکر