語法
public delegate void BugTicketEventHandler();
delegate 是關鍵詞,注:EventHandler是一個聲明委托的微軟C#的命名標準。
public void BuyTicket()
{
方法體
}
在現實生活中,委托只是個命令,做事情是別人,而在程序世界里委托只是存儲了各個方法的地址,而他自己也是什么也不做的。
//小張類
public class MrZhang
{
//其實買車票的悲情人物是小張
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
}
//小明類
class MrMing
{
//聲明一個委托,其實就是個“命令”
public delegate void BugTicketEventHandler();
public static void Main(string[] args)
{
//這里就是具體闡述這個命令是干什么的,本例是MrZhang.BuyTicket“小張買車票”
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
//這時候委托被附上了具體的方法
myDelegate();
Console.ReadKey();
}
}
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
這是委托的聲明方法, BugTicketEventHandler(委托的方法);委托的方法必須要加上,因為委托的構造函數是不為空的。
注:委托的參數和返回類型,都要和你要具體委托的方法要一致,例:
public delegate void BugTicketEventHandler();
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
委托鏈
//小張類
public class MrZhang
{
//其實買車票的悲情人物是小張
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
public static void BuyMovieTicket()
{
Console.WriteLine("我去,自己泡妞,還要讓我帶電影票!");
}
}
//小明類
class MrMing
{
//聲明一個委托,其實就是個“命令”
public delegate void BugTicketEventHandler();
public static void Main(string[] args)
{
//這里就是具體闡述這個命令是干什么的,本例是MrZhang.BuyTicket“小張買車票”
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
myDelegate += MrZhang.BuyMovieTicket;
//這時候委托被附上了具體的方法
myDelegate();
Console.ReadKey();
}
}
其實,我們只是在程序中加了 myDelegate += MrZhang.BuyMovieTicket;這時這個委托就相當于要做2件事情,先是買車票,再是買電影票拉!