C#委托、事件和Lambda表达式(3)

1.匿名方法

  从之前的示例可以看出当一个调用者想监听传进来的事件时,它必须定义一个唯一的与之相关联委托签名匹配的方法。

  但这个方法很少会被调用委托之外的任何程序所调用,从而显得有点繁琐不受欢迎。

  为了解决这一情况,现在可以在事件注册时直接将一个委托与一段代码相关联,修改之前的Program类中的委托的调用如下:

            //注册事件处理程序作为匿名方法
       c1.AboutToBlow += delegate { Console.WriteLine("Eek ! goning too fast"); };
            c1.Exploded += delegate (object sender, CarEventArgs e)
              {
                  Console.WriteLine("The Message from car is {0}", e.msg);
              };

  注意上面第一段代码没有参数,严格来说我们不需要接收指定事件发送的传入参数,如果想使用可能传入的参数,需要通过委托类型指定参数原型(如第二段代码)

 

2.Lambda表达式

  Lambda表达式用更简单的方式来写匿名方法,彻底简化了对.NET委托类型的应用

  Lambda表达式编写规则如下:

  ArgumentsToProcess => StatementsToProcessThem

  (1) 首先定义一个参数列表

  (2) ‘=>’ 标记紧随其后

  (3)处理这些参数的语句

 

3.使用Lambda表达式修改上述示例如下

  

c1.AboutToBlow += (sender,e) => { Console.WriteLine(e.msg); }

 

posted @ 2018-03-21 09:15  Zed_H  阅读(115)  评论(0)    收藏  举报