是否有可能将Func <T1,T2,TResult>转换为Func <T2,T1,TResult>

YJ *_*hen 2 c# lambda delegates

首先,foo是一个Func <T1,T2,TResult>对象.有可能做类似的事情

Func<T2,T1,TResult> bar = ConvertFunction(foo);
Run Code Online (Sandbox Code Playgroud)

因此将Func <T1,T2,TResult>转换为Func <T2,T1,TResult>.

Dan*_*rth 7

是的,这是可能的:

Func<T2, T1, TResult> bar = (t2, t1) => foo(t1, t2);
Run Code Online (Sandbox Code Playgroud)

这基本上创建了另一个具有切换参数的委托,内部简单地调用原始委托.如果你只有a 而不是a,
这是执行这种"转换" 的唯一方法.Func<T1, T2, TResult>Expression<Func<T1, T2, TResult>>

  • 我认为这个问题不是一个好的答案.这不是转换:你只是在另一个func中调用func. (2认同)