使用两次时,C#params参数选择

时间:2016-09-03 17:30:25

标签: c# params

我很好奇为什么以下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#规则我打算这样做。

0 个答案:

没有答案