我有以下代表:
public delegate object DynamicFunction(dynamic target, params object[] args);
但是,当我尝试创建它时:
DynamicFunction func = new DynamicFunction((t) => {
//Handle t
});
即使我将最后一个参数指定为type,编译器也会抛出一个错误,指出该委托不接受1个参数params object[]
。
如果我将一个额外的参数明确地传递给委托人,它将起作用。例如:
DynamicFunction func = new DynamicFunction((t,a) => {
//Handle t
});
但是,我不想指定该额外的参数,因为我有意希望这些参数是可选的。
这是怎么回事
params
这意味着当您调用函数将传递给数组的任何参数转换为函数时,编译器会做聪明的事情。
这并不意味着函数本身具有1或2个参数,并不意味着函数f(dynamic target)
and有2个版本f(dynamic target, params object[] args)
。
请注意,您仍然希望能够拨打电话
func (1);
func(1, optional1, optional2);
因此,您的代表需要同时处理这两个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句