事件,委托

委托:其實就是一種命令,A委托B,做事情的是B

上面是在現實世界里,反過來在程序世界中的.

委托實際上就是存儲了方法的地址,做事情的仍然是B

.net編程規(guī)范說明聲明委托是以xxxxEventHandler結尾

委托的語法格式:

public?+?delegate關鍵字+方法返回值+委托名

一個委托的例子

class?HelloWorld

{

//定義一個委托

public?delegate?void?GreetingDelegate(string?name);

兩個待委托的方法

public?static?void?EnglishGreeting(string?name){

Console.WriteLine?("hello,"+name);

}

public?static?void?ChineseGreeting(string?name){

Console.WriteLine?("你好,"+name);

}

定義一個有參數并且參數之一為委托的方法.只要傳入為何種方法則調用哪種方法的委托public?void?GreetingPeople(string?name,GreetingDelegate?greeting){

greeting?(name);

}

public?static?int?Main?(string[]?args)

{

HelloWorld?hw?=?new?HelloWorld?();

hw.GreetingPeople?("黃河",?HelloWorld.ChineseGreeting);

hw.GreetingPeople?("huanghe",?HelloWorld.EnglishGreeting);

return?0;

}

}

事件一般會牽扯到兩個角色:

1.事件發(fā)起者(Sender/Publisher):實際上就是事件的發(fā)行者.

2.事件訂閱者(Receiver):對發(fā)起者發(fā)的通知感興趣的話,就可以選擇訂閱該事件.

事件絕大部分都要和委托連用.

關鍵字delegateevent

匿名函數-->不記名函數c#2.0引進的

lambda表達式c#3.0引進的

聲明一個委托帶參數帶返回值的委托

public?delegate?string?myDelegate(string?name);

帶參數帶返回值

myDelegate?d4;

d4?=?(string?name)=>?"你好"?+?name;

Console.WriteLine?(d4?("中國"));

"mL?t

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容