Delegate در سی شارپ

سه شنبه 12 آبان 1394

در این مقاله درباره delegate صحبت کنیم Delegate یک نوع اشاره گر است که نشان دهنده reference یک متد است. دراینجا ما توضیح میدهیم که Delegate چیست.

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 یک متد است  که چند متد را در خود جای می دهد.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 5 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید