gpt4 book ai didi

c# - 在类中打包事件参数,为什么?

转载 作者:IT王子 更新时间:2023-10-29 04:22:36 24 4
gpt4 key购买 nike

大多数 .NET 股票事件都有这个签名:

delegate void SomethingSomething(SomethingEventArgs e);
event SomethingSomething OnSomethingSomething;

class SomethingEventArgs
{
public string Name;
public int Index;
public double Groar;
}

为什么这比(显然是,否则任何人都会选择这样做)更好:

delegate void SomethingSomething(string Name, int Index, double Groar);
event SomethingSomething OnSomethingSomething;

因为您不必将参数打包到对象中,并且没有初始化程序 (.NET 2.0),所以这是一种打字练习。

我想到的一个原因是,当将值打包到一个对象中时,您可以更简单地返回值 - 即。处理程序可以修改对象的成员。然而,对于多播事件,这并不总是好的。

那么,为什么?

最佳答案

了解 Open/Closed principle .

通过使用类,所有继承的类都可以引入额外的功能,而无需更改委托(delegate)签名。他们可以简单地引入一个继承您的事件类 (SomeEventArgs) 的新事件类 (ExtendedEventArgs)。

关于c# - 在类中打包事件参数,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270512/

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