gpt4 book ai didi

c# - 引发事件似乎已经改变

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:55 25 4
gpt4 key购买 nike

在以前的 .NET 版本中(我认为是 3),我使用类似这样的东西来引发带有自定义 EventArgs 的事件

public delegate void NewTitleEventArgs(object sender, string title);
public event NewTitleEventArgs NewTitle;

public class NewTitleEventArgs : EventArgs //Class used to pass data to event consumers when sending notification.
{
public readonly string NewTitle;
public NewTitleEventArgs(string Title)
{
NewTitle = Title;
}
}

不过,现在看来我只需要这样做:

public delegate void NewTitleEventArgs(object sender, string title);
public event NewTitleEventArgs NewTitle;

并完全忽略类。这是标准还是新事物?

最佳答案

我想我知道你在说什么,是的,有变化。在 .NET 4.0和更早的 EventHandler<TEventArgs> 的定义是

public delegate void EventHandler<TEventArgs>(
Object sender,
TEventArgs e
)
where TEventArgs : EventArgs

但是从 .NET 4.5 开始定义改为

public delegate void EventHandler<TEventArgs>(
Object sender,
TEventArgs e
)

唯一的区别是 TEventArgs不再需要从 EventArgs 继承所以现在可以做

public event EventHandler<string> NewTitle;

这会让订阅成员(member)成为

public void myObject_NewTitle(object sender, string title)
{
//...
}

而不是有一些EventArgs包装器将您的标题作为唯一的成员。

关于c# - 引发事件似乎已经改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20671418/

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