c# - 匿名方法不再省略参数?
问题描述
除了与他们一起工作了一年多之外,我一直在研究关于代表的报告已经有一段时间了。
查找有关 C# 2.0 中使用的匿名方法和 C# 中的 lambda 表达式之间差异的一些信息,我阅读了一些关于 2.0 匿名方法提供的 lambda 不提供的功能:它们可以省略参数列表。
在对此进行一些研究之后,我尝试在运行最新版本 C# 的个人 IDE 上对此进行测试,发现当我尝试使用它们为我的委托类型分配一个不带任何参数的匿名方法时,我得到一个错误:
委托 Test.MyHelloDelegate 不接受 0 个参数
class TestClass
{
public delegate void MyHelloDelegate (string s);
MyHelloDelegate Hello = delegate () { Console.WriteLine("Hello from delegate"); };
private void CallHello ()
{
Hello("dummy");
}
}
我自己的假设是它已被修补,因为无论如何人们只会使用 lambda,但我确实需要一些证据,因为我将把它放在我的报告中。很想知道是否有人知道这是怎么回事。
解决方案
是的,因为您附加的匿名方法不接受输入参数。将其更改为
public delegate void MyHelloDelegate (string s);
MyHelloDelegate Hello = delegate(string s) { Console.WriteLine("Hello from delegate " + s); };
如果您不想传递任何参数,请考虑使用以下语法
MyHelloDelegate Hello = delegate { Console.WriteLine("Hello from delegate "); };
推荐阅读
- wxpython - 无法让 wx.TextCtrl 内容重新居中调整大小
- spring-boot - 从源 '' 访问 XMLHttpRequest 在 '' () 已被 CORS 策略阻止:不存在 'Access-Control-Allow-Origin' 标头
- excel - Excel 2010 版本无法执行
- sql - 查找对购买最多的客户的销售额最高的员工
- laravel - \Request::getSession() 在 Controller 构造中返回 NULL
- postgresql - 如何核对 postgres 模式?
- python - 检查数据框单元格是否包含另一个数据框单元格中的值
- linux - 在分叉之前或之后在磁盘文件上调用 mmap() 有什么区别?
- java - 无法使用 Sendgrid SMPT 触发高优先级电子邮件到 Java 中的 Outlook
- python - 如何从文件中的 3D 列表/数组中提取数据以进行计算