我们可以为两个事件拥有相同的代表吗?哪些输入参数相同?或委托和事件有一对一的关系?
答案 0 :(得分:4)
当然,许多事件都使用EventHandler作为简单委托。
或者您的意思是,您可以将多个事件订阅到同一个方法?这也是可能的,你可以订阅,例如订阅TextChanged - 从所有文本框到同一个委托的事件。特别是对于Validating和Validated事件,对于使用相同验证逻辑的所有字段只使用一种方法是有用的。
事件通常在.NET中进行多播,因此您可以将许多代理订阅到一个事件。例如,您可以为文本字段指定两个或三个验证方法,并将TextBox.Validating事件订阅到验证输入的一个方面的所有方法。
答案 1 :(得分:4)
您是指对两个不同的事件声明使用相同的委托类型,还是使用相同的委托实例来订阅两个不同的事件?两者都是允许的:
public event EventHandler Foo;
public event EventHandler Bar;
...
EventHandler handler = SomeMethod;
Foo += handler;
Bar += handler;
答案 2 :(得分:0)
只要事件处理程序相同,您就可以在任意数量的事件上拥有相同的处理程序。
来自MSDN:
委托类型定义传递给处理事件的方法的参数集。 多个事件可以共享相同的委托类型,因此只有在尚未声明合适的委托类型时才需要执行此步骤。