kma*_*mur 4 .net c# events delegates
订阅2种订阅方式有什么区别?
receiver.ConfigChanged += Config_ConfigChanged;
receiver.ConfigChanged += new EventHandler(Config_ConfigChanged);
Run Code Online (Sandbox Code Playgroud)
似乎它们都以相同的方式工作,但如果是这样,那么使用第二种方法有什么意义呢?
如果取消订阅,以下两种方法的工作方式是否相同?
receiver.ConfigChanged -= Config_ConfigChanged;
receiver.ConfigChanged -= new EventHandler(Config_ConfigChanged);
Run Code Online (Sandbox Code Playgroud)
Cod*_*aos 12
详细的方式适用于所有版本的C#,这只是C#2及更高版本的简短方法.所以我认为现在没有理由使用漫长的道路.
在某些情况下您仍然需要使用new DelegateType(methodGroup),但事件订阅不是其中之一.这些情况通常涉及泛型类型推断或方法重载.
取消订阅将以任何方式工作,因为它基于值相等而不是引用相等.如果我没记错,从方法组隐式转换和显式newget转换为相同的IL代码.隐式转换只是语法糖.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |