語法
public delegate void BugTicketEventHandler();
delegate 是關鍵詞,注:EventHandler是一個聲明委托的微軟C#的命名標準婿着。
public void BuyTicket()
{
方法體
}
在現(xiàn)實生活中授瘦,委托只是個命令,做事情是別人竟宋,而在程序世界里委托只是存儲了各個方法的地址提完,而他自己也是什么也不做的。
//小張類
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(委托的方法);委托的方法必須要加上,因為委托的構造函數(shù)是不為空的秽澳。
注:委托的參數(shù)和返回類型闯睹,都要和你要具體委托的方法要一致,例:
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("我去孩锡,自己泡妞,還要讓我?guī)щ娪捌保?);
}
}
//小明類
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件事情炕置,先是買車票荣挨,再是買電影票拉!