两者有什么区别?
object.ProgressChanged += new EventHandler<ProgressChangedEventArgs>(object_ProgressChanged)
object.ProgressChanged += object_ProgressChanged;
void installableObject_InstallProgressChanged(object sender, ProgressChangedEventArgs e)
{
EventHandler<ProgressChangedEventArgs> progress = ProgressChanged;
if (installing != null)
installing(this, e);
}
编辑:
如果没有区别,哪个是更好的选择?
谢谢!
最佳答案
基本上,一个比另一个短。这只是句法糖。
“正确”的语法是第一个,因为 ProgresChanged 是一个 EventHandler 事件,所以要为它分配一个实际的处理程序,您需要创建一个新的 EventHandler 对象,其构造函数将一个事件的名称作为参数具有所需签名的方法。
但是,如果您只指定方法的名称(第二种语法),则会隐式创建 eventHandler 类的实例,并将该实例分配给 ProgressChanged 事件。
我更喜欢使用第二种方法,因为它更短,而且不会丢失任何信息。没有多少上下文可以让您将 += methodName
结构误认为是其他东西。
关于c# - 使用 "new EventHandler<T>"和不使用 new EventHandler<T> 的接线事件之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468868/