【发布时间】:2011-08-17 22:52:06
【问题描述】:
我知道我可以声明具有默认常量参数的委托,例如:
delegate void MyDelegate(int x, int y = 5);
然后用任何匹配签名的方法在任何地方调用它。
好的,我有很多这样声明的方法:
public Something FirstMethod(float val = 10, int skip = 0){ ... return sth; }
public Something SecondMethod(float val = 20, int skip = 0){ ... return sth; }
public Something ThirdMethod(float val = 5, int skip = 0){ ... return sth; }
...这个列表一直向上,无论如何,它们都有那个签名结构。这里的重点是,它们都有浮点参数,默认为不同的值。
然后,我想创建一个指向以下方法之一的委托:
delegate Something ProblematicDelegateType(<<WHAT WILL GO HERE>>);
ProblematicDelegateType myFunc;
if(someValue == someParameter){
myFunc = FirstMethod;
}else if(...){
myFunc = SecondMethod;
}else...
...
}
myFunc();
myFunc(skip:100);
我希望能够无参数或使用skip 参数调用myFunc。在这部分代码中,第一个参数val 没有被使用。 (它们在其他地方使用)。
什么将进入委托的参数列表?我想保留 该方法的默认 val 参数,无论它是什么。
【问题讨论】:
标签: c# delegates optional-parameters