我想创建
public delegate void ValueChangedHandler(int value);
public delegate void ValueChangedHandler(Object sender, int value);
它拒绝:怎么做或者不可能?
编辑:感谢您的回答,我理解技术原因,但我仍然希望从表现形式的角度来理解,所以我很沮丧.net框架没有办法做如此。
答案 0 :(得分:4)
你让代表和方法感到困惑......方法可以被覆盖,代表也不能。
委托是一种类型,您可以声明ValueChangedHandler
类型的变量:
ValueChangedHandler handler;
如果你可以重载委托,那么这段代码会引用ValueChangedHandler
的重载?
重载代表只是没有意义......
答案 1 :(得分:1)
我不确定你是否可以重载代表,以前从未见过。
我建议的是这样的:
public delegate void ValueChangedHandler(params object[] list);
希望这有帮助,
答案 2 :(得分:1)
委托是一种类型。即如果您正在创建委托,那么您实际上正在创建一个派生自System.Delegate的类。
public delegate void ValueChangedHandler(int value);
因此,您已经创建了一个ValueChangedHandler类。所以,如果你正在写作
public delegate void ValueChangedHandler(int value, int j);
然后在单个命名空间下有两个具有相同名称的类。所以编译器不允许。
答案 3 :(得分:1)
由于ValueChangedHandler不是一个方法,而是一个类型,你不能重载它 - 你可以用不同的参数创建一个新的事件处理程序。
通常的做法是扩展事件处理程序的paraterers:
public delegate void EventHandler(object sender, EventArgs e);
您可以定义扩展EventArgs的自定义类以传递更多数据。