不再使用参数的匿名方法了吗?

时间:2019-04-07 22:01:36

标签: c# delegates

除了与代表们合作一年多以来,我一直在研究代表报告。

查找有关C#2.0中使用的匿名方法与C#中的lambda表达式之间的区别的一些信息,我读到一些有关2.0匿名方法提供lambda不提供的功能的信息:它们可以省略参数列表。

对此进行了一些研究之后,我尝试在运行最新版本C#的个人IDE上进行测试,发现当我尝试使用它们为我的Delegate类型分配没有任何参数的匿名方法时,错误:

委托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,所以它已被修补,但我确实需要一些证据,因为我会将其放入报告中。很想知道是否有人对此有何看法。

1 个答案:

答案 0 :(得分:0)

是的,因为您附加的匿名方法未采用输入参数。更改为

'

如果您不想传递任何参数,请考虑使用以下语法

public delegate void MyHelloDelegate (string s);
MyHelloDelegate Hello = delegate(string s) { Console.WriteLine("Hello from delegate " + s); };