因為最近在學C#,還是堅持每天對昨天的學習做一個總結,昨天學的是委託和事件。以下是個人對委託和事件的理解,不當之處還請批評指正。
委託:就象我們日常生活中的代理吧,象委託同學買火車票一樣,你(觸發事件)要給同學身份證和錢(作為參數),同學才執行買這個動作(方法),返回的就是你的一張票(傳回值)。委託因為它也是一個參考型別,所以要用到他的時候都要執行個體化它,一個是在沒有事件的情況下,怎麼運用委託。
public delegate void MyDelegate1();//說明方法中沒有參數和傳回值。
public delegate int MyDelegate2(int a,int b);//方法中帶兩個參數,傳回值為int 類型。
static void Main(string[] args)
{
Program p=new Program();
MyDelegate1 de1=new MyDelegate1(p.Hello);//執行個體化一個委派物件,和方法產生關聯。
de1();//調用
MyDelegate1 de=de1+new MyDelegate1(p.Say);//也可以相加
de();//先調用de1()的。
MyDelegate2 de2=new MyDelegate2(p.Sum);
Console.WriteLine(de2(23,56));//
}
Public void Say()
{
Console.WriteLine("Say Hi");
}
Public void Hello()
{
Console.WriteLine("Hello");
}
Public int Sum(int a,int b)
{
return a+b;
}
上面沒有用到事件來觸發,下面寫一下事件的觸發,怎麼實現。
public delegate void Mydelegate1();//聲明委託
public event Mydelegate1 MyEvent;//聲明事件,並指定他的委託。
static void Main(string[] args)
{
Program p=new Program();
p.MyEvent = new Mydelegate1(p.Hello);
p.Raise();
}
Public void Raise()
{
if(MyEvent!=null)
{
MyEvent();
}
}
public void Hello()
{
Console.WriteLine("Hello");
}
//當看到winform裡面
this.Load += new System.EventHandler(this.Form1_Load);這也是一個委託的執行個體。