将带参数的函数传递给期望无的委托

时间:2011-06-04 10:05:25

标签: c# events parameters delegates

我知道在Python中你可以使用functools.partial传递一个函数对象,其中包含已经定义的部分或全部参数。

有没有办法在C#中执行此操作?我想做以下事情: class1.MethodTakingAMethodParameter(3, "foo", class1.MethodToPass(param1, param2, param3));

对于像delegate void Blah()这样的代表。

1 个答案:

答案 0 :(得分:2)

您可以使用lambdas为某些参数赋值:

Action paramlessDelegate = ()=>MyFunc(value1,value2,value3)

或者,如果您只想将值放入某些参数:

Action<int> oneParamDelegate = (remainingParam)=>MyFunc(value1, remainingParam, value3)

在你的例子中:

class1.MethodTakingAMethodParameter(3, "foo", ()=>class1.MethodToPass(param1, param2, param3));