轉自:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1703368.htmlhtml
從序言中,你們應該對委託和事件的重要性有點了解了吧,雖說咱們如今仍是能模糊,可是從個人大白話系列中,我會把這些概念說的通俗易懂的。首先,咱們仍是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2箇中文字不認識,舉個例子,小明委託小張去買車票。
可是在咱們的程序世界裏,也是這麼的簡單嗎?固然,什麼是OO,OO就是現實世界的抽象,全部現實世界的事物,在OO裏都能獲得很好的詮釋,很差意思,扯遠了......函數
那咱們就單刀直入吧,若是同窗們不嫌煩的話,能夠看一下,網上中文,英文的那個GreetingPeople例子。spa
首先是C#語法3d
delegate 是關鍵詞,【注:EventHandler是一個聲明委託的微軟C#的命名標準,個人習慣是標準就要第一時間說,也就這個命名習慣要第一時間養成】code
完了,這就是委託,就這麼簡單,看看和咱們通常的方法有什麼區別呢?htm
區別知道了吧,在現實生活中,委託只是個命令,作事情是別人,而在程序世界裏委託只是存儲了各個方法的地址,而他本身也是什麼也不作的。blog
那咱們就把剛纔那個,小明委託小張去買車票的現實生活場景,怎麼在程序世界裏體現呢?事件
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket); string
這是委託的聲明方法, BugTicketEventHandler(委託的方法);委託的方法必需要加上,由於委託的構造函數是不爲空的。it
注:委託的參數和返回類型,都要和你要具體委託的方法要一致,例:
public delegate void BugTicketEventHandler();
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
同窗們,看到這裏能夠先消化消化,休息一下,咱們簡單的講一下委託鏈的概念:
其實委託鏈也是至關的簡單,在現實生活中,小明叫小張買完車票以後,可能接着又讓他帶張電影票,
而咱們程序世界裏的表述爲:
其實,咱們只是在程序中加了 myDelegate += MrZhang.BuyMovieTicket;
這時這個委託就至關於要作2件事情,先是買車票,再是買電影票拉! 好了,關於大白話的委託就介紹到這裏了,是否是並無你們想的這麼可怕呢,在下一回咱們就接着大白話的EVENT的講解。