为什么EventHandlers对象参数只是一个对象类型?

时间:2009-08-14 09:46:00

标签: c# design-patterns

为什么EventHandlers会这样设计?

void uxSave_Click(object sender, EventArgs e)

为什么不呢?

void uxSave_Click(Button sender, EventArgs e)

3 个答案:

答案 0 :(得分:3)

因为在使用第一种方式时,您也可以将此单击事件附加到面板。但如果你必须控制事件做第二种方式,你需要定义两个事件,而不是在两个地方附加一个事件。

答案 1 :(得分:3)

另外,请记住.NET在版本1.0中没有泛型。否则,合理的设计可能已将事件处理程序定义为:

public delegate void EventHandler<TSender, TEventArgs>(TSender sender, TEventArgs e);
public event EventHandler<Control,ClickEventArgs> Click;

答案 2 :(得分:0)

我认为这可能是因为您不能总是假设您的发件人是您期望的类型。其他人可以从其他地方调用该事件。