.net - 定义事件处理程序

标签 .net events delegates lambda

我可以定义这样的事件(声明的函数):

MyElement.Keyup +=MyDeclaredFunction

我也可以这样定义(匿名委托(delegate)):
MyElement.Keyup+=new delegate(object sender, eventargs e) {};

我也可以这样定义它(lambda):
MyElement.Keyup += (sender, e) => myfunction

做这个的最好方式是什么?在一种情况下,事件的代码是在事件声明中找到的……在另一种情况下,它们是分开的。

我更喜欢方法1

谁能告诉我每种方法的优缺点可能是什么?

最佳答案

方法 2 和 3 相同。

在方法 1 中,您可以稍后取消订阅事件。在方法 2 中,您不能取消订阅事件。我会说这是主要区别。

关于.net - 定义事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856670/

相关文章:

php - 使用php的Mysql事件错误

关于委托(delegate)的 C# 问题

.net - MySqlCommand调用函数

c# - 是否可以构建一个二叉树并跟踪中位数,仍然使用 O(log(n)) 插入?

c# - 检查 WeakReference 目标引用计数

events - CQRS 事件版本控制

c# - 在 .NET framework 上运行 .NET core App

javascript - Keydown 事件不会触发函数

ios - 从应用委托(delegate)中检索 managedObjectContext 时崩溃

delphi - 为什么不能在 64 位 Delphi 中获取嵌套局部函数的地址?