C# 代理操作/Func的最大参数在网络源代码中是8,在元数据中是16,为什么?

C# 代理操作/Func的最大参数在网络源代码中是8,在元数据中是16,为什么?,c#,C#,我可以为内置委托Action()和Func()声明一个委托变量,该变量最多包含16个参数 当我在Action()和Func()上运行Go-To-Definition时,我也会得到最大值16,但这是[从元数据]获取的。例如,这两行可以很好地编译: Action<float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float> MA

我可以为内置委托Action()和Func()声明一个委托变量,该变量最多包含16个参数 当我在Action()和Func()上运行Go-To-Definition时,我也会得到最大值16,但这是[从元数据]获取的。例如,这两行可以很好地编译:

Action<float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float> MAction;
Func  <float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float> MFunc;
动作动作; Func MFunc; 然而,NET 4.6的实际源代码在源代码文件Action.cs中显示了Action()和Func()参数的最大计数8-为什么会有差异

这是[来自元数据]

 #region Assembly System.Core, Version=4.0.0.0, Culture=neutral,  PublicKeyToken=b77a5c561934e089
 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
 #endregion
 namespace System
 {
      public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, out TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16);
 }
#region Assembly System.Core,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089
//C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
#端区
名称空间系统
{
公共委托树结果函数(T1 arg1、T2 arg2、T3 arg3、T4 arg4、T5 arg5、T6 arg6、T7 arg7、T8 arg8、T9 arg9、T10 arg10、T11 arg11、T12 arg12、T13 arg13、T14 arg14、T15 arg15、T16 arg16);
}
文件action.cs显示的最大值为8

 public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, out TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
公共委托TResult Func(T1 arg1、T2 arg2、T3 arg3、T4 arg4、T5 arg5、T6 arg6、T7 arg7、T8 arg8);

。它们位于单独程序集的单独项目中的单独源文件中,这就是为什么很难找到它们,但它们在那里。

差异是因为您在源文件中查找错误的文件。对于0-8种类型,它们存在于
mscorlib.dll
中,但是对于超过8种类型,它们是在
System.Core.dll
中定义的


如果查看for中的
程序集:
,可以看到不同之处。

请提供用于检查源代码的链接。此外,元数据页面标题中注释掉的部分对于检查正在查找的程序集也很有用。请在你的问题中添加这两个内容作为编辑。我不关心计数,但关心两个来源之间的差异,这两个来源应该是相同的