gpt4 book ai didi

C#订阅事件时为什么要使用 "new"关键字?

转载 作者:太空狗 更新时间:2023-10-30 00:05:50 25 4
gpt4 key购买 nike

以下两种订阅方式有什么区别?

receiver.ConfigChanged += Config_ConfigChanged;

receiver.ConfigChanged += new EventHandler(Config_ConfigChanged);

看起来它们的工作方式相同,但如果是这样,使用第二个的意义何在?

关于取消订阅,以下两种方法是否同样有效?

receiver.ConfigChanged -= Config_ConfigChanged;

receiver.ConfigChanged -= new EventHandler(Config_ConfigChanged);

最佳答案

详细方式适用于所有版本的 C#,简短方式仅适用于 C# 2 及更高版本。所以我认为现在没有理由使用长途。

有些情况下您仍然需要使用 new DelegateType(methodGroup),但事件订阅不是其中之一。这些情况通常涉及泛型类型推断或方法重载。

退订将以任何一种方式进行,因为它基于值相等,而不是引用相等。如果我没记错的话,方法组的隐式转换和显式 new 都被翻译成相同的 IL 代码。隐式转换只是语法糖。

关于C#订阅事件时为什么要使用 "new"关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7751247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com