2016-02-08 42 views
0

我有在python一個函數,它使用一個函數和args(元組)作爲輸入到其內的功能:我可以使用PARAMS行動InnedMethod複製這些()。但是,我如何在這裏將輸入變量(params)包裝到InnerMethod?我怎樣才能做到這一點。如何可變參數傳遞給在C#的內部方法

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

回答

2

要傳遞一個params[]陣列以一個函數的參數,定義方法與Action<T>參數(而不是IFunction),並使用這一位代碼:

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