假设我有一个记录错误的类(ErrorLog)。每次将错误添加到日志时,该类都会引发一个事件 (ErrorLog.EventErrorAdded) 以通知观察者日志中添加了新错误。此事件有一些数据 (ErrorLog.EventErrorAddadArgs)。
另一个班级想要观察这些事件。构造函数订阅 ErrorLog.EventErrorAdded 以便调用方法 OnEventErrorAdded(object Sender, ErrorLog.EventErrorAddedArgs Args)。
我发现 Microsoft 订阅该事件的方式与我的订阅方式之间存在差异。这两种方法似乎都有效。我不明白微软方法的优势。有谁会?
代码将类似于:
public class ErrorLog
{
public class EventErrorAddadArgs: EventArgs
{
...
}
public EventHandler<EventErrorAddadArgs> EventErrorAdded;
etc.
}
public class MyObserver
{
private ErrorLog myErrorLog = new ErrorLog();
public MyObserver()
{
// observe myErrorLog.EventErrorAdded,
// make sure that OnEventErrorAdded is called
// my method would be:
myErrorLog.EventErrorAdded += OnEventErrorAdded;
// Microsoft however prefers the following method:
myErrorLog.EventErrorAdded += new System.EventHandler<ErrorLog.EventErrorAddadArgs>(this.OnEventErrorAdded);
}
private OnEventErrorAdded(object Sender, ErrorLog.EventErrorAddedArgs Args)
{
...
}
etc.
}
这两种方法都在编译时检查语法正确性。两种方法都有效。所以我的问题是:在我只提到委托函数的方法之上的“新 System.EventHandler”方法有什么优势?