为什么 Funcs 不接受超过 16 个参数?

2024-01-15

由于 Javascript 是我最精通的语言,因此我熟悉使用函数作为一等对象。我原本以为C#缺少这个功能,但后来我听说了Func and Action and delegate,我认为这非常棒。

例如,您可以声明一个Func连接两个字符串并在它们之间放置一个空格,如下所示:

Func<string, string, string> concat = (a,b) => a + " " + b;

我注意到当你输入时

Func<

IntelliSense 显示它有 17 个重载:

delegate System.Func<out TResult>
delegate System.Func<in T, out TResult>
delegate System.Func<in T1, in T2, out TResult>
...snip...
delegate System.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>

这让我笑了。我看了看MSDN 文档 http://msdn.microsoft.com/en-us/library/dd402862.aspx#Y163 for Func然后又笑了。这让我尝试声明一个Func有 17 个参数。它会导致错误(Using the generic type 'System.Func<TResult>' requires 1 type arguments).

我同意,拥有一个可能不是一个好主意Func接受超过 16 个参数。即便如此,这似乎是一种笨拙的方式Func将要执行。它需要记录 17 个截然不同的重载。这就是它真正需要知道的一切:最后一个类型参数是返回类型,它之前的所有类型参数都是参数类型。

那么如果我想创建一个Func超过 16 个参数?为什么还是有限制呢?为什么 C# 不能让你声明一个Func具有任意数量的参数?


你希望得到类似的东西可变参数类型参数 http://en.wikipedia.org/wiki/Variadic_template这是 C# 所缺乏的。 C# 要求泛型类型的数量是固定的,因此泛型类型的数量令人发指。Func, Action, and Tuple types.

如果您正在选择语言,此功能已添加到 C++11 中,但您可能应该只使用 jQuery。 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Funcs 不接受超过 16 个参数? 的相关文章

随机推荐

  • 在 Java 中显示数百万张图像的最佳方式是什么?

    你看到了吗 每栋房子的每一块砖都是一张 16x16 像素的图像 您可以在这里看到一个基于简单 JavaFX 的版本 其中包含一些Imageview在 X 和 Y 上移动以产生 构造 效果 我只是适应这个Swing using paintCo
  • 自定义Android切换轨道“动画”

    我创建了一个基本的自定义Switch 如下定义
  • Heroku + Apartment PG::错误:错误:函数 pg_stat_statements_reset() 不存在

    我在 Rails 4 中使用 Apartment gem 来支持 Heroku 上 Postgres 9 3 3 中的多租户 Apartment gem 创建新租户时出错 深入调查显示创建了一个架构 但内部没有表 Heroku 日志显示错误
  • 除了实际破解代码之外,了解 VM 实现的最佳方法是什么?

    我想了解有关虚拟机实现和优化的更多信息 现在 我正在 以很小的方式 使用 JRuby 做出贡献 并且还在使用我自己的在虚拟机中运行的类似 lisp 的语言实现进行游戏 编写 不过 我想获得有关使用虚拟机并设计它们的更多信息 除了阅读 使用现
  • Oracle 在评估 rownum 之前是否会获取所有行?

    我有一个包含数百万条记录的表 我想确保 Oracle 只要找到第一个匹配项就停止查找 select from table1 where table1 column1 somevalue AND table2 column2 somevalu
  • 数据未写入数据库

    我正在 CheckboxProcess CheckedChanged 事件中向数据库写入一个位值 然而 实际上什么也没有写出来 我里面有一些代码填充了适配器 但我把它拿出来了 有人能看出哪里出了问题吗 protected void Page
  • 禁用表单仍然允许子控件接收输入

    最近几天我在使用 delphi 时感到很头疼 我想做的很简单 在某个点阻止接口并在其他点之后启用 但听起来很简单 我无法弄清楚为什么设计允许某些事情 所以澄清一下 1 创建一个项目 2 在表单中放置一个编辑和一个按钮 编辑的Tab顺序必须是
  • Chrome / Safari 未填充 Flex 父级的 100% 高度

    我想要一个具有特定高度的垂直菜单 每个子项都必须填充父项的高度 并且文本居中对齐 孩子的数量是随机的 所以我必须使用动态值 Div container包含随机数量的子项 item 总是必须填充父级的高度 为了实现这一点 我使用了 Flexb
  • 创建 mozilla 扩展以在其中显示弹出窗口和 iframe

    我正在尝试开发一个 mozilla 扩展 我只需要在弹出窗口中显示 iframe 但不知道该怎么做 我的要求是 在顶部导航工具栏添加扩展按钮 单击扩展按钮时在弹出窗口上显示 iframe 我没有找到任何与此类似的教程 请帮我 谢谢 哈里普拉
  • PHP使用正则表达式将大写文件扩展名转换为小写

    我正在尝试实现以下转换 IM22 htp JPG gt IM22 htp jpg 到目前为止 我已经尝试了以下方法 但似乎不起作用 string IM22 htp JPG pattern w i replacement 1 strtolow
  • 在 p:datatable primefaces 之外找不到标识符为 h:selectBooleanCheckbox 的组件

    我的应用程序中有这段代码 我想将 h selectBooleanCheckbox 值提交到服务器 h selectBooleanCheckbox 位于 p tabView 内部和 p dataTable 外部 我想提交 h selectBo
  • Maven:自定义 web-app 项目的 web.xml

    我有一个 Web 应用程序 Maven 项目 我想根据正在运行的配置文件自定义 web xml 文件 我正在使用 Maven War plugin 它允许我定义一个 资源 目录 可以在其中过滤文件 然而 仅靠过滤对我来说还不够 更详细地说
  • 静态类中静态方法中的变量

    请考虑这段代码 1 public static class MyClass 2 3 public static DateTime MyMethod DateTime dt 4 5 DateTime temp new DateTime 6 t
  • 使用字符串数组声明 java 枚举

    我试图根据从数据库检索的数据声明枚举类型 我有一个方法 它返回表中所有行的字符串数组 我想将其转换为枚举类型 有没有办法用数组构造枚举 这是我尝试过的 但从它在 Eclipse 中的外观来看 这似乎只是创建了一个具有该名称的方法 publi
  • CodeMirror - 样式 Tern 智能感知标签

    我正在使用 CodeMirror 的 Tern 插件 它向编辑器添加了智能感知功能 即弹出内联提示标签 我想改变提示标签的样式 该怎么做 Tern 将 CSS 类名附加到提示框 您可以利用它们来设置样式 例如 CodeMirror Tern
  • 编写脚本来检查远程主机服务是否运行[重复]

    这个问题在这里已经有答案了 这是脚本 但即使 Apache 正在运行其 show stop 输出也是错误的 我使用的是 Ubuntu 12 04 ssh qn root ip if ps aux grep h ttpd gt dev nul
  • 发送电子邮件时出现 VBScript 错误“80040211”

    我在发送电子邮件时遇到错误 错误 80040211 这是我的代码的示例 Dim objMessage Set objMessage CreateObject CDO Message objMessage Subject Super Serv
  • 向元组添加值

    我最初使用 Idictonary 在 MVC 模型中存储字符串值 如下所示 public IDictionary
  • JavaScript 数组排序中的奇怪行为[重复]

    这个问题在这里已经有答案了 我在尝试对 JavaScript 数组进行排序时遇到了奇怪的行为 var arr a b C d e f g h I k arr sort function a b console log a b if a le
  • 为什么 Funcs 不接受超过 16 个参数?

    由于 Javascript 是我最精通的语言 因此我熟悉使用函数作为一等对象 我原本以为C 缺少这个功能 但后来我听说了Func and Action and delegate 我认为这非常棒 例如 您可以声明一个Func连接两个字符串并在