码迷,mamicode.com
首页 > Windows程序 > 详细

C#委托四——事件event

时间:2015-04-10 13:44:25      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:event   委托   delegate   

PanPen120在CSDN上原创,如其他网站转载请注意排版和写明出处:
研究委托,因为有函数指针的基础,还容易上手,但是对于一些概念和实践,总是为了弄的非常清楚而纠结,这几篇关于委托的文章我是结合《C#与.NET4高级程序设计》、MSDN、借鉴其他人的博文来总结话语,以最直接简洁的话来阐述清楚

关键字:

event

描述/优势:

是delegate的子集。限制委托对象实例,是一种特殊的delegate

目的:

1.和委托一起使用,简化发送事件通知到调用者的处理过程,纯粹是用以节省键入时间的可选方案,简化自定义方法的构建来为委托调用列表增加和删除方法(书中的总结,以后用来吹牛可以用得到)
2 保护delegate的一种方式(和优势中的限制是一个意思)

注意:

1.支持多路广播,即一个对象可以调用多个方法,是个方法列表

2.注册方法时只能用+=,注销方法时-=(注册就是这个event对象可以调用什么方法,就给它赋值什么函数,注销就是调用event对象的时候取消那个方法)

3.注册的方法需要是静态的或是对象引用的

用法:

      总:和delegate搭配使用

      分:首先声明delegate的类型
      分:其次使用event关键字 

示例:

namespace testEvent3
{
    public delegate void EventHandler();//声明一个返回值void无参的delegate类型
    class Test
    {
        public event EventHandler Click;   //使用event

        public void MyClick()
        { Click();}
    }
    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            test.Click += PrintfMyName;
            //test.Click = PrintfMyName;
            //这里的注释是因为使用了event,所以赋值只可以+=或者-=,不能=
            //test.Click();
            //这里的注释是因为使用了event,所以不能随意调用,所以我写了MyClick()
            test.MyClick();
        }
        static void PrintfMyName()
        { Console.WriteLine("My name is panpen120"); }
    }
}

小结:event是事件的核心编程,何为事件,即做了一件事A,即触发了事件B,由此才有代码中那两行的注释,怎么解释呢:
不管event是public还是private,都不能随意执行它的方法,前提你做了事A
由此你觉得是不是模拟了工具箱里的Button

C#委托四——事件event

标签:event   委托   delegate   

原文地址:http://blog.csdn.net/panpen120/article/details/44976843

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!