我在python中有一个函数,该函数使用一个函数和args(tuple)作为其内部函数的输入:我可以使用params和Action InnedMethod()复制这些函数。但是,如何在此处将输入变量(参数)包装到InnerMethod?我该如何实现。

蟒蛇

  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;
}

最佳答案

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

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

关于c# - 如何在C#中将变量参数传递给Inner方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35274480/

10-10 08:11