我见过开发人员非常交替地使用以下代码。这些之间的确切区别是什么,哪些符合标准?它们是否相同,如Action
和 Func<T>
也是委托(delegate):
public event Action<EmployeeEventAgs> OnLeave;
public void Leave()
{
OnLeave(new EmployeeEventAgs(this.ID));
}
对比
public delegate void GoOnLeave(EmployeeEventAgs e);
public event GoOnLeave OnLeave;
public void Leave()
{
OnLeave(new EmployeeEventAgs(this.ID));
}
最佳答案
Fwiw,这两个示例都没有使用标准的 .NET 约定。 EventHandler<T>
泛型应该声明事件:
public event EventHandler<EmployeeEventArgs> Leave;
应该为引发事件的 protected 方法保留“On”前缀:
protected virtual void OnLeave(EmployeeEventArgs e) {
var handler = Leave;
if (handler != null) handler(this, e);
}
您不必这样做,但任何人都会立即识别出该模式、理解您的代码并知道如何使用和自定义它。
而且它具有很大的优势,即不会被迫在自定义委托(delegate)声明和 Action<>
之间做出选择。 , EventHandler<>
是最好的方法。这回答了你的问题。
关于c# - Action<T> 与委托(delegate)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282476/