如何将变量参数传递给C#中的Inner方法

时间:2016-02-08 16:28:55

标签: c# python python-2.7 params args

我在python中有一个函数,它使用一个函数和args(元组)作为其内部函数的输入:我可以使用 params Action InnedMethod()复制它们。但是如何将输入变量(params)包装到InnerMethod中呢?我怎样才能做到这一点。

PYTHON

  def wrap_function(function, args):
    ncalls = [0]
    if function is None:
        return ncalls, None

    def function_wrapper(*wrapper_args):
        ncalls[0] += 1
        return function(*(wrapper_args + args))

    return ncalls, function_wrapper

CSHARP:我正在尝试复制上面的Python函数

private double ObjectiveFunctionWrapper(IFunction f, Tuple<List<double>, List<double>> args)
{
    int ncalls = 0;

    Action function_wrapper = () =>
        {
            ncalls = ncalls + 1;
            f(params )
        };
    function_wrapper();
    return ncalls;
}

1 个答案:

答案 0 :(得分:2)

要将params[]数组传递给函数参数,请使用Action<T>参数(而不是IFunction)定义方法,并使用以下代码:

public Action<T> SetParameters(Action<object[]> action, params object[] parameters)
{
    return delegate { action(parameters) };
}