我很好奇为什么以下DoInvoke方法都不能只用一个参数调用:
public class foo {
private void bar(params object[] args) {
DoInvoke(args);
}
//Error: There is no argument given that corresponds to the required formal parameter 'args' of 'foo.DoInvoke(Delegate, object[])'
private void DoInvoke(Delegate d, object[] args) {
d.DynamicInvoke(args);
}
//Error: Argument 1: cannot convert from 'object[]' to 'System.Delegate'
private void DoInvoke(Delegate d, params object[] args) {
d.DynamicInvoke(args);
}
}
我已经找到了一种不会滥用params的方法。我很好奇为什么params不会扩展到这里。
我能够在Lua做类似的事情,因此我的尝试。我知道Lua不那么严格,但是我不确定哪个C#规则我打算这样做。