正确使用EventArgs

时间:2015-03-16 09:29:16

标签: c# events eventargs

我有一个非常基本的事件:

public event EventHandler OnAborted;

所有我需要做的就是调用此事件,我甚至不需要提供任何参数,所以它没什么特别的。我对EventArgs参数的正确用法感到困惑。

我可以使用:

if (OnAborted != null)
   OnAborted(this, EventArgs.Empty);

或者我甚至可以使用:

if (OnAborted != null)
   OnAborted(this, new EventArgs());

在这两种情况下,EventArgs似乎都没用,我甚至无法提供任何论据(不是我需要的,但这不是重点)。

EventArgs的正确用法是什么?我应该创建一个继承EventArgs的自定义类吗?

1 个答案:

答案 0 :(得分:2)

使用EventArgs.Empty不会创建新对象并在堆上分配它。此外,EventArgs.EmptyNull Object Pattern的一个实例。有一个对象代表"没有价值"避免在使用时检查为空。

要在使用EventArgs或正确的课程时添加更多内容,请在此处获得有关活动设计的MSDN指南:

  

考虑使用System.EventArgs的派生类作为事件参数,除非您完全确定事件永远不需要将任何数据传递给事件处理方法,在这种情况下您可以使用System。 EventArgs直接输入。

     

如果定义一个事件,该事件采用EventArgs实例而不是您定义的派生类,则无法在以后的版本中向事件添加数据。因此,最好创建一个空的派生类EventArgs。这允许您在以后的版本中向事件添加数据,而不会引入重大更改。