2 wyf86 wyf86 于 2016.04.28 11:42 提问

C#如何事件注册/委托用法问题

在用事件注册和委托时,遇到了困惑。在button注册事件时,C#默认是这样的:
this.button1.Click += new System.EventHandler(this.button1_Click);
实际上这样也可以执行:
this.button1.Click += this.button1_Click;
那么这两种方法到底有什么区别?


为什么要加这个委托?在自定义委托和事件时,按Tab自动补齐时,有时出现下面两种格式的一种,怎么回事?
Control.DetailEvent += Control_DetailEvent;
Control.DetailEvent +=new Control_DetailEventHandler(Control_DetailEvent);

2个回答

lieaf
lieaf   2016.05.03 10:29

Control.DetailEvent += Control_DetailEvent;
Control.DetailEvent +=new Control_DetailEventHandler(Control_DetailEvent);
这两种写法都没错,而且没有区别,
Control.DetailEvent += Control_DetailEvent; 仅仅是简化的写法,实现机理就是
Control.DetailEvent +=new Control_DetailEventHandler(Control_DetailEvent);

如果你再学到匿名方法、lambda表达式等的话,还会有更简化的写法,但最终都是一回事。

u012758945
u012758945   2016.04.28 13:22

本质上没有区别,
Control_DetailEvent 是执行方法(Method),而Control_DetailEventHandler是个委托类型(Delegate)
简单来说,委托是对一类同参数同返回类型方法的描述
使用 Control.DetailEvent += Control_DetailEvent,编译器会自动实例化一个Control_DetailEvent对应的Delegate类型。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!