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
原文地址:http://blog.csdn.net/panpen120/article/details/44976843