当前位置: 首页 > 编程语言 > C#

我应该实例化一个新委托吗?Share

时间:2023-04-11 00:29:50 C#

我应该实例化一个新的委托吗?我刚刚意识到我可以通过两种方式添加事件处理程序:考虑这样的事件处理程序:privatevoidMyEventHandler(){}方法1:实例化一个新委托MyObject.MyEvent+=newAction(MyEventHandler);方法2:在不实例化新委托的情况下添加事件处理程序MyObject.MyEvent+=MyEventHandler;应该考虑这两个实现之间有什么区别吗?没有区别,生成的IL是一样的。.net/c#2.0中引入了较短的形式作为一种便利功能,尽管VisualStudio仍会在Tab完成时执行第一种形式。有关详细信息,请参阅此问题。我相信虽然你可以取消订阅第二个,但你不能取消订阅第一个。这将是一个非常重要的区别。无论如何,将它包装在一个Action中并没有真正获得任何好处。更新好的,我想我误解了你在做什么。如果事件声明为公共事件ActionMyEvent;那么这两个订阅是等价的,第二个是第一个的简写。实际上还有其他方法可以添加事件处理程序:MyObject.MyEvent+=delegate{MyEventHandler();};MyObject.MyEvent+=()=>MyEventHandler();在这些情况下,您将无法退订。在这些示例中,委托正在调用处理程序方法,但通常在使用此方法时,您应该避免必须创建单独的处理程序方法——处理程序代码在匿名方法中是正确的。以上是C#学习教程:要不要实例化一个新的代表?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: