关于 C# 中的事件处理程序的简单问题,假设我们有以下代码:
MyObject.MyEventHandler += (...)
我目前正在重构一些代码,并且 (...) 经常被替换为另一个事件处理程序,如下所示:
EventHandler A;
Test()
{
A += A_Method;
MyObject.MyEventHandler += A
}
忽略“A”并直接写成:
不是更简单吗?Test()
{
MyObject.MyEventHandler += A_Method;
}
如果我们可以直接将方法从“MyObject”传递给EventHandler对象,那么EventHandler“A”有什么用?
谢谢!
最佳答案
我猜你的意思是
A += A_Method;
MyObject.MyEventHandler += A;
(A_Method 之后不带括号)。如果是这样,假设没有什么比这个例子更复杂的了,A
可能可以安全地省略。重构时,F12(转到定义)是您的 friend :查找所有引用并确保它们都正确地重新路由,等等。
关于C# 事件处理程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692813/