相关疑难解决方法(0)

事件Action <> vs event EventHandler <>

声明event Action<>和声明之间有什么不同吗event EventHandler<>

假设实际引发事件的对象无关紧要.

例如:

public event Action<bool, int, Blah> DiagnosticsEvent;
Run Code Online (Sandbox Code Playgroud)

VS

public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;

class DiagnosticsArgs : EventArgs
{
    public DiagnosticsArgs(bool b, int i, Blah bl)
    {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

两种情况下的使用情况几乎相同:

obj.DiagnosticsEvent += HandleDiagnosticsEvent;
Run Code Online (Sandbox Code Playgroud)

关于event EventHandler<>模式,有几件我不喜欢的事情:

  • 从EventArgs派生的额外类型声明
  • 强制传递对象来源 - 通常无人问津

更多代码意味着维护更多代码而没有任何明显的优势.

结果,我更喜欢 event Action<>

但是,只有在Action <>中有太多类型参数时,才需要额外的类.

c#

132
推荐指数
7
解决办法
9万
查看次数

标签 统计

c# ×1