什么允许匿名无参数委托类型不同?

2024-01-31

已读入(作为“C# 3.0 中的委托和 Lambda 表达式”系列文章的一部分)短语:

  • "高级主题:无参数匿名方法

    ...匿名方法可以省略参数列表(delegate { return Console.ReadLine() != ""}, 例如)。这是非典型的,但确实如此允许相同的匿名方法即使出现在多个场景中委托类型可能会有所不同"*

我变得有点困惑。

IMO(现在找不到,但据我记得),类型由参数列表决定,而不是由方法的返回类型决定。这是对的吗?

那么,无参数方法或委托的类型有何不同?

任何说明同一匿名方法的不同无参数委托类型的(尽可能简单的)代码示例都将受到赞赏。


参数列表是not允许不同。但对于匿名方法来说,这是合法的omit完整的参数列表。编译器已经知道参数列表必须是什么样子,所以不需要编写它。当然,如果你打算use参数(通常是参数),然后您必须指定并命名它们。

我认为这说明了:

internal delegate void NoParameters();

internal delegate void SomeParametersThatYouMightNotUse(int i, ref string s, Uri uri);

那么以下是合法的:

NoParameters f = delegate { Console.WriteLine("Hello"); };
SomeParametersThatYouMightNotUse g = delegate { Console.WriteLine("Hello"); };

注意,没有括号( ... )关键字之后delegate.

If但是,您在括号中指定参数,当然它们必须与类型匹配:

NoParameters f = delegate() { Console.WriteLine("Hello"); };
SomeParametersThatYouMightNotUse g = delegate(int i, ref string s, Uri uri) { Console.WriteLine("Hello"); };

在所有情况下,当您invoke委托,使用正确的参数:

f();

string myString = "Cool";
g(42, ref myString, new Uri("http://stackoverflow.com/"));

Lambda 表达式语法在这方面略有不同。她你永远不能省略参数。但在许多情况下您可以省略参数的类型。如果只有一个参数,并且省略了它的类型,那么您也可以省略括号。

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

什么允许匿名无参数委托类型不同? 的相关文章

随机推荐

  • 选择名称为数组字段的输入字段

    我想根据条件选择文本字段 例如 if only text field name sname than only put value in it 为此我使用了
  • Python列表直接修改

    lines absb asdjhasd sadjhj sdhjsdh asjhjhad asdasd ashjhfdj asdasd for z in lines for l in z l l split print lines 我怎样才能
  • AngularFire 更新 -> 哪里

    我在这里找不到东西 我的问题是如何更新 AngularFire 中 WHERE 子句中返回的文档 constructor private db AngularFirestore var path this db collection use
  • Windows 并发 tcp/ip 连接的最大数量是多少?

    在 NET中我已经成功尝试了以下配置
  • 如何修饰类中的方法?

    我试图在类中装饰一个方法 但 python 抛出错误 我的班级是这样的 from pageutils import formatHeader class myPage object def init self self PageName d
  • 有没有办法重命名 Keras 模型的指标和损失?

    我有一个非常大的模型 有很多损失和指标 当我做print np array self model metrics names 我明白了 loss autoencoder loss autoencoder loss autoencoder l
  • 错误类型错误:无法读取未定义的属性“长度”

    我的这部分代码有错误 img src assets gms logo png alt website icon 但是当我检查资产文件夹时 gms logo png仍然在那里并且在angular cli json 资产也在那里 路径也是正确的
  • Android/iOS OpenCV 眼睛扩张检测

    寻找有关 OpenCV 是否可以或已经用于检测 Android 或 iOS 上的眼睛扩张的意见 除了使用 OpenCV 的 EyePhone 应用程序进行眼动追踪和眨眼检测之外 我没有发现太多其他功能 在完美的条件下 我确信这是可能的 我更
  • Bootstrap 3 - 显示所有屏幕尺寸的折叠导航

    我正在使用 Bootstrap v3 我已经设置了导航栏类 这样当我的屏幕大小为移动设备大小时 导航会折叠并出现类似网格的小切换按钮 所以这可以按预期工作 我想要的是 这是所有屏幕尺寸的默认操作 也就是说 即使在桌面上 我也希望导航折叠起来
  • 如何从xslt中的java地图获取数据

    我需要从 XSLT 中的 Java 地图获取数据 我知道使用 xalan 我可以实现它 但我们依赖于通用 Transformer 这迫使我们使用 Saxon HE 我将 java 映射传递给变量并在 XSLT 中获取它 请建议我们如何实现这
  • 清除或重新创建 Ruby on Rails 数据库

    我有一个充满数据的开发 Ruby on Rails 数据库 我想删除所有内容并重建数据库 我正在考虑使用类似的东西 rake db recreate 这可能吗 我知道有两种方法可以做到这一点 这将重置您的数据库并重新加载当前架构 rake
  • 选择全日历中的整周

    我在使用 fullcalendar 插件时遇到了问题 我试图通过单击在月视图中选择整周 然后创建一个事件 换句话说 如果您单击特定周中的任何一天 该周将突出显示并创建一个事件 此后 该事件应输入我的数据库中 这是我到目前为止所拥有的
  • (w)ifstream 支持不同的编码吗

    当我使用 wifstream 将文本文件读取为宽字符串 std wstring 时 流实现是否支持不同的编码 即它可以用于读取例如ASCII UTF 8 和 UTF 16 文件 如果没有 我该怎么办 我需要阅读整个文件 如果这有影响的话 C
  • 空响应和未找到响应的 HTTP 状态代码

    我们正在实现基于 REST 的 Web 服务 并且对某些用例有一些疑问 考虑有一个唯一的帐户 其中包含一些信息 例如添加到购物车信息 如果不存在购物车信息 我们应该返回什么响应代码 例如 0 我们的理解是返回 200 并返回空响应 用户将购
  • assertj:比较 dto 和实体类之间的字段

    我需要比较一个DTO类及其Entity class 例如 一个AddressDTO类将是 Setter Getter NoArgsConstructor AllArgsConstructor public class AddressDTO
  • React CRA with CSP:拒绝执行内联脚本

    我已经使用以下方式建立了一个新网站Material UI 创建 React 模板 https github com mui org material ui tree master examples create react app 我添加了
  • agrep:只返回最佳匹配

    我在 R 中使用 agrep 函数 它返回匹配向量 我想要一个类似于 agrep 的函数 它只返回最佳匹配 或者如果存在平局则返回最佳匹配 目前 我正在对结果向量的每个元素使用 cba 包中的 sdist 函数来执行此操作 但这似乎非常多余
  • 在 IntelliJ 中的弹出 JavaDoc 上隐藏 JetBrains 注释

    有没有办法隐藏或turn off those 可用推断注释当我从方法中阅读弹出文档时 如下图所示 IntelliJ IDEA 中没有设置可以禁用它 I ve 提交了请求 https youtrack jetbrains com issue
  • 在 Elastic Beanstalk 上部署 NestJS 应用程序

    我正在尝试将我的 NestJS 应用程序部署到 AWS elastic beanstalk 但没有取得任何成功 有人可以一步步写下我如何实现这一目标吗 完整解释 我有一个带有 typeorm 的 Nestjs 应用程序 但没有将其配置为与
  • 什么允许匿名无参数委托类型不同?

    已读入 作为 C 3 0 中的委托和 Lambda 表达式 系列文章的一部分 短语 高级主题 无参数匿名方法 匿名方法可以省略参数列表 delegate return Console ReadLine 例如 这是非典型的 但确实如此允许相同