"和不使用 new EventHandler 的接线事件之间的区别?-6ren"> "和不使用 new EventHandler 的接线事件之间的区别?-两者有什么区别? object.ProgressChanged += new EventHandler(object_ProgressChanged) object.ProgressChanged +-6ren">
gpt4 book ai didi

c# - 使用 "new EventHandler"和不使用 new EventHandler 的接线事件之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 20:59:44 27 4
gpt4 key购买 nike

两者有什么区别?

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/

27 4 0