以参数类型为参数的函数类型

时间:2019-01-14 15:30:34

标签: c# parameters

-已编辑-

我写了以下函数-

 public static int params1(params int [] x) {
        return 1;
    }

我想将此函数作为参数传递给另一个函数,但这是编译错误-

    public static int Foo(Func<params int [], int> myMethodName) {
           return 1; 
}

我应该如何将此函数传递给Foo函数?


实际上,我应该用更多细节描述我的问题-

我做了你写给我的东西,但是我注意到,如果我将参数定义为params,那么我在不带参数的情况下调用函数就没有问题。

这是新代码-

 public static int params1(params int [] x) {
    return 1;
}

        public static int Foo(Func<int [], int> myMethodName) {
           return myMethodName(); 
}

此代码中存在编译错误(因为它必须获取其类型为int []的参数),我该如何解决?

1 个答案:

答案 0 :(得分:2)

您的问题可能是其中之一:

  1. 如果您只是尝试将params1传递给Foo,请从params的声明中删除单词Foo

    public static int Foo(Func<int [], int> myMethodName) {
        return 1; 
    }
    
  2. 如果您希望Foo能够像这样呼叫myMethodName

    myMethodName(1, 2, 3);
    

    然后您需要一个自定义委托:

    public delegate int CustomDelegate(params int[] parameters);
    
  3. 如果只允许将接受params参数的方法传递给Foo,就我所知,没有办法做到这一点。

    < / li>