在以前的 .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/