首页 > 代码库 > Delegate and Event

Delegate and Event

1.Delegate

 

delegate 是关键词,【注:EventHandler是一个声明委托的微软C#的命名标准,我的习惯是标准就要第一时间说,也就这个命名习惯要第一时间养成】

在现实生活中,委托只是个命令,做事情是别人,而在程序世界里委托只是存储了各个方法的地址,而他自己也是什么也不做的。

BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);

这是委托的声明方法, BugTicketEventHandler(委托的方法);委托的方法必须要加上,因为委托的构造函数是不为空的。

注:委托的参数和返回类型,都要和你要具体委托的方法要一致

     class MrZhang
    {  
        public static void BuyTicket()
        {
            Debug.WriteLine("Ming you go to Buy Ticket For me!");
        }
    }

 

    class MrMing
    {
        public static void Doit()
        {
         
            Debug.WriteLine("i do it!");
        }
    }

 

    public sealed partial class MainPage : Page
    {
        public delegate void BuyTicketEventHandler();
    
        public MainPage()
        {
            this.InitializeComponent();

            BuyTicketEventHandler myDelegate = new BuyTicketEventHandler(MrZhang.BuyTicket);
            myDelegate += MrMing.Doit;
            myDelegate += test;
            myDelegate();
        }    
        void test()
        {
            Debug.WriteLine("TEST");
        }

    }

 

技术分享

 

 

 

2.Event

 

事件是类在发生其关注的事情时用来提供通知的一种方式。

事件的发生一般都牵扯2个角色

事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知说有的事件订阅者。

事件订阅者(Subscriber):对事件感兴趣的对象,也称为Receiver,可以注册感兴趣的事件,在事件发行者触发一个事件后,会自动执行这段代码。

 

Delegate and Event