C#基础知识---Lambda表达式

一、Lambda表达式简介

Lambda表达式可以理解为匿名函数,可以包含表达式和语句。它提供了一种便利的形式来创建委托。

Lambda表达式使用这个运算符--- “=>”,它读成“goes to” ,该运算符的左边为输入参数,右边是表达式或者语句块。

 

二、例子

  例1:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Windows.Forms;
 7 
 8 namespace Lambda
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14 
15             //下面是C# 1中创建委托实例的代码
16             Func<string, int> del1 = new Func<string, int>(CallBackMethod);
17 
18             //C#2中用匿名方法来创建委托实例,CallBackMethod
19             Func<string, int> del2 = delegate (string text)
20             {
21                 return text.Length;
22             };
23 
24             //C# 3中使用Lambda表达式来创建委托实例
25             Func<string, int> del3 = (string text) => text.Length;
26                                  
27             // 可以省略参数类型string,把上面代码再简化为:
28             Func<string, int> del4 = (text) => text.Length;
29                              
30             // 如果Lambda表达式只需一个参数,并且那个参数可以隐式指定类型时,
31             // 此时可以把圆括号也省略,简化为:
32             Func<string, int> del5 = text => text.Length;
33 
34             int length = del5("Test");
35             Console.WriteLine("Length:" + length);
36 
37             Console.ReadKey();
38         }
39 
40         private static int CallBackMethod(string str)
41         {
42             return str.Length;
43         }
44     }
45 }
View Code

  例2: 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Windows.Forms;
 7 
 8 namespace Lambda
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             Button button1 = new Button() { Text = "按钮1", Width = 50, Height = 50, Name = "button1" };
15             button1.Left = 10;
16             button1.BackColor = System.Drawing.Color.Red;
17 
18             Button button2 = new Button() { Text = "按钮二", Width = 50, Height = 50, Left = 70, Name = "button2" };
19             button2.BackColor = System.Drawing.Color.Green;
20 
21             // C# 2中使用匿名方法来订阅事件
22             button1.Click += delegate (object sender, EventArgs e)
23             {
24                 ReportEvent("Click事件", sender, e);
25             };
26 
27 
28             // C# 3Lambda表达式方式来订阅事件
29             button2.Click += (sender, e) => ReportEvent("Click事件", sender, e);
30 
31 
32             Form form = new Form { Name = "在控制台中创建的窗体", AutoSize = true };
33 
34             form.Controls.Add(button1);
35             form.Controls.Add(button2);
36             // 运行窗体
37 
38             string str = "";
39             bool isShow = false;
40             while (!isShow)
41             {
42                 str = Console.ReadLine();
43                 switch (str)
44                 {
45                     case "show":
46                         isShow = true;
47                         Application.Run(form);
48                         break;
49                     case "quit":
50                         Environment.Exit(0);
51                         break;
52 
53                 }
54             }
55             Console.ReadKey();
56         }
57         // 记录事件的回调方法
58         private static void ReportEvent(string title, object sender, EventArgs e)
59         {
60             Console.WriteLine("事件名称:{0}", title);
61             Console.WriteLine("激发事件的对象:{0}", (sender as Button).Name);
62             Console.WriteLine("事件参数类型: {0}", e.GetType());
63             Console.WriteLine();
64             Console.WriteLine();
65         }
66     }
67 }
View Code

  运行结果如下:

  

转载于:https://www.cnblogs.com/3xiaolonglong/p/9674151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值