首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在网络源代码中,委托Action/Func的最大参数是8,在元数据中是16,为什么?

在网络源代码中,委托Action/Func的最大参数是8,在元数据中是16,为什么?
EN

Stack Overflow用户
提问于 2017-05-17 02:58:23
回答 2查看 40关注 0票数 1

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

代码语言:javascript
运行
复制
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;

然而,在源代码文件action.cs中,NET4.6的实际源代码显示Action()和Func()的参数的最大计数为8--为什么会有差异?

这来自元数据

代码语言:javascript
运行
复制
 #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);
 }

文件action.cs显示最大值8

代码语言:javascript
运行
复制
 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);
EN

回答 2

Stack Overflow用户

发布于 2017-05-17 03:11:27

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

如果您查看themdocumentation中的Assembly:,就会看到不同之处。

票数 1
EN

Stack Overflow用户

发布于 2017-05-17 03:09:03

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44009486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档