我有一个非常基本的事件:
public event EventHandler OnAborted;
所有我需要做的就是调用此事件,我甚至不需要提供任何参数,所以它没什么特别的。我对EventArgs
参数的正确用法感到困惑。
我可以使用:
if (OnAborted != null)
OnAborted(this, EventArgs.Empty);
或者我甚至可以使用:
if (OnAborted != null)
OnAborted(this, new EventArgs());
在这两种情况下,EventArgs
似乎都没用,我甚至无法提供任何论据(不是我需要的,但这不是重点)。
EventArgs的正确用法是什么?我应该创建一个继承EventArgs
的自定义类吗?
答案 0 :(得分:2)
使用EventArgs.Empty
不会创建新对象并在堆上分配它。此外,EventArgs.Empty
是Null Object Pattern的一个实例。有一个对象代表"没有价值"避免在使用时检查为空。
要在使用EventArgs
或正确的课程时添加更多内容,请在此处获得有关活动设计的MSDN指南:
考虑使用System.EventArgs的派生类作为事件参数,除非您完全确定事件永远不需要将任何数据传递给事件处理方法,在这种情况下您可以使用System。 EventArgs直接输入。
如果定义一个事件,该事件采用EventArgs实例而不是您定义的派生类,则无法在以后的版本中向事件添加数据。因此,最好创建一个空的派生类EventArgs。这允许您在以后的版本中向事件添加数据,而不会引入重大更改。