C# 微软行动;Func8结构?

C# 微软行动;Func8结构?,c#,.net,clr,C#,.net,Clr,我注意到Action和Func都有委托,具体结构为2到8个参数: 为什么要打开显式计数参数类型?(如果是,为什么是8?) 如果我有10个参数呢 编辑 这是对八大传统的延续, 元组有7 编辑2 在SystemCore.Dll中,有1..16个参数 >为什么要打开显式计数参数类型 因为该语言不支持可变数量的类型参数 >(如果是,为什么是8?) 因为4个通常就足够了 >如果我有10个参数呢 然后,您必须将以下内容添加到您自己的代码中: delegate void Action<T1, T

我注意到
Action
Func
都有委托,具体结构为2到8个参数:

为什么要打开显式计数参数类型?(如果是,为什么是8?)

如果我有10个参数呢

编辑 这是对八大传统的延续, 元组有7

编辑2 在SystemCore.Dll中,有1..16个参数

>为什么要打开显式计数参数类型

因为该语言不支持可变数量的类型参数

>(如果是,为什么是8?)

因为4个通常就足够了

>如果我有10个参数呢

然后,您必须将以下内容添加到您自己的代码中:

 delegate void Action<T1, T2, ... , T10> (T1 arg1, T2 arg2, ..., T10 arg10);
委托无效操作(T1 arg1、T2 arg2、…、T10 arg10);

因为泛型没有varg,它们需要在某个地方划清界限?如果你的方法有10个参数,你必须将它们作为一个结构传递,或者你可能无论如何都需要重构一些东西。@rup我可以这样回答你:
如果你的方法有7个参数,你必须将它们作为一个结构传递,
,我还问,为什么是8个?为什么大多数汽车都有4个座位?如果我想乘坐5名乘客怎么办?不要认为这背后有任何计算上的原因,只要建筑师/物理学的选择…@Tigran这正是我的问题。我认为只有身边有文件的人才能回答这个问题。(IMHO)9-16存在于.NET 4中。在
System.Core
中,我想。@我的意思是(虽然直到16岁才知道)如果我需要17岁怎么办…:)@RoyiNamir:如果你需要17岁,你显然做错了;p然后创建一个容器类。@leppie我想我曾经见过一个将一些元素合并成较短形式的解决方案……听起来很熟悉吗?@RoyiNamir:不,我想最接近这个的应该是
元组。理论上可以有7 x 16个参数。但同样,糟糕的设计让绿巨人很生气!