阅读下面的代码后:
[SerializableAttribute]
public delegate void EventHandler<TEventArgs>
(
object sender,
TEventArgs e
)
Run Code Online (Sandbox Code Playgroud)
为什么微软的人不像发送者参数那样为"e"参数提供对象类型?我错过了一些重要的东西吗?
如果他们这样做了,人们就会经常不得不施放args参数.关键是你可以做以下事情:
public event EventHandler<SomeInterestingEventArgs> SomeEvent;
Run Code Online (Sandbox Code Playgroud)
和:
obj.SomeEvent += (sender, args) => Console.WriteLine(args.SomeSpecificProperty);
Run Code Online (Sandbox Code Playgroud)
这是替换声明需求的便捷方式:
public delegate void SomeInterestingEventHandler(
object sender, SomeInterestingEventArgs args);
Run Code Online (Sandbox Code Playgroud)
没有这个你就不得不这样做.