C# 为什么EventHandlers对象参数只是一种对象类型?

C# 为什么EventHandlers对象参数只是一种对象类型?,c#,design-patterns,C#,Design Patterns,为什么EventHandler是这样设计的 void uxSave_Click(object sender, EventArgs e) 为什么不是这个 void uxSave_Click(Button sender, EventArgs e) 因为在使用第一种方法时,您也可以将此单击事件附加到面板。但是如果采用第二种方法,如果必须控制事件,则需要定义两个事件,而不是在两个位置附加一个。另外,请记住.NET在1.0版中没有泛型。否则,合理的设计可能会将事件处理程序定义为: public del

为什么EventHandler是这样设计的

void uxSave_Click(object sender, EventArgs e)
为什么不是这个

void uxSave_Click(Button sender, EventArgs e)

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

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

public delegate void EventHandler<TSender, TEventArgs>(TSender sender, TEventArgs e);
public event EventHandler<Control,ClickEventArgs> Click;
public delegate void EventHandler(TSender sender,TEventArgs e);
公共事件事件处理程序单击;

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