为什么要编译:
public Dictionary<ValueLineType,
Func<HtmlHelper,
string,
object,
Type,
string>> constructor =
new Dictionary<ValueLineType,
Func<HtmlHelper,
string,
object,
Type,
string>>();
但不是另一个在Func(布尔值)中有一个额外参数:
public Dictionary<ValueLineType,
Func<HtmlHelper,
string,
object,
Type,
bool,
string>> constructor =
new Dictionary<ValueLineType,
Func<HtmlHelper,
string,
object,
Type,
bool,
string>>();
要么我失明了,要么我今天要学习其他东西:D
答案 0 :(得分:18)
没有Func<T1,T2,T3,T4,T5,TResult>
之类的东西。它只能达到4个参数(即5个类型参数,包括一个用于返回值):
Func<T>
Func<T1, TResult>
Func<T1, T2, TResult>
Func<T1, T2, T3, TResult>
Func<T1, T2, T3, T4, TResult>
SpinalTap<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>
您当然可以声明自己的声明:
public delegate TResult Func<T1, T2, T3, T4, T5, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
然而,在那一点上,我会仔细考虑您是否可以将这些参数封装在一起。他们完全不相关吗?
答案 1 :(得分:10)
仅供参考,下一版本的.NET库将包含超过四个参数的Func和Action泛型类型。
答案 2 :(得分:3)
由名为Func的框架定义的不同类包含1到5个参数。您需要定义自己的类,需要6。
答案 3 :(得分:0)
Func only需要4个参数和一个TResult