我只是很好奇究竟什么是简单的更好.我可以有:
event EventHandler blah;
Run Code Online (Sandbox Code Playgroud)
要么
delegate void Blah();
event Blah Blah1;
Run Code Online (Sandbox Code Playgroud)
除了节省额外的代码行之外,使用EventHandlers是否有一些优势?
一个EventHandler是一个delegate额外的参数.第一个是发件人,即导致该事件的对象,第二个是额外的事件数据.它只是一个用于声明事件的一致模式.如果不将发送方作为参数传递,则无法轻松检测到哪个对象导致它,这可能会导致不必要的重复(复制和粘贴)代码.如果遵循标准事件模式,则事件处理程序可以根据导致事件的对象的属性执行不同的任务.
此外,一些事件沿着它们传递额外的信息,例如,键入的事件MouseEventHandler将在其第二个参数(MouseEventArgs)中传递鼠标指针的位置,以供您的事件处理程序使用.这种模式的好处是,如果事件处理程序是通用的并且不需要它,则可以忽略辅助数据.例如,您可以将具有EventHandler签名的方法连接到MouseEventHandler事件(因为第二个参数的类型继承自EventArgs).