问题描述
- 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);
解决方案
本质上没有区别,
Control_DetailEvent 是执行方法(Method),而Control_DetailEventHandler是个委托类型(Delegate)
简单来说,委托是对一类同参数同返回类型方法的描述
使用 Control.DetailEvent += Control_DetailEvent,编译器会自动实例化一个Control_DetailEvent对应的Delegate类型。
解决方案二:
Control.DetailEvent += Control_DetailEvent;
Control.DetailEvent +=new Control_DetailEventHandler(Control_DetailEvent);
这两种写法都没错,而且没有区别,
Control.DetailEvent += Control_DetailEvent; 仅仅是简化的写法,实现机理就是
Control.DetailEvent +=new Control_DetailEventHandler(Control_DetailEvent);
如果你再学到匿名方法、lambda表达式等的话,还会有更简化的写法,但最终都是一回事。
时间: 2024-08-02 17:54:56