我看到here Func<(Of <(T1, T2, T3, T4, TResult>)>) Delegate
是命名空间中的最后一个Func
。如果您需要4个以上的参数,该怎么办?
答案 0 :(得分:8)
您可以创建自己的Func
代理,也可以等待.NET 4到达(它包含内置Func
和Action
代表,最多包含16个参数)。
正如其他人所提到的,如果你发现自己需要一个接受这么多参数的委托,那么也许是时候考虑某种重构了。
public delegate TResult Func<T1, T2, T3, T4, T5, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, T7, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
// etc
答案 1 :(得分:4)
在.Net 4中,有超载直到17(给予或接受)参数。
就个人而言,我认为这是疯了。如果您需要4个以上的参数,那么就该创建一个新类,其中包含您需要的所有参数作为属性。
答案 2 :(得分:2)