C#EventHandler问题

时间:2011-01-14 15:41:24

标签: c# methods event-handling

关于C#中的EventHandlers的快速问题,假设我们有以下代码:

MyObject.MyEventHandler += (...)

我目前正在重构一些代码,并且(...)经常被另一个事件处理程序替换,如下:

EventHandler A;

Test()
{    
   A += A_Method;
   MyObject.MyEventHandler += A       
}

忽视“A”而不是简单地写下来是不是更简单:

Test()
{    
   MyObject.MyEventHandler += A_Method;       
}

如果我们可以直接将方法从“MyObject”传递给EventHandler对象,那么EventHandler“A”的用途是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

当然,只要A不在其他地方使用。否则,它可能是一种减少代码重复的重构。

答案 1 :(得分:2)

我认为你的意思是

A += A_Method;
MyObject.MyEventHandler += A;

(A_Method后没有括号)。如果是这样,假设没有比示例更复杂的内容,A可能会被安全地省略。在重构时,F12(转到定义)是你的朋友:查找所有引用并确保它们都被正确地重新路由等。