Lambda表达式的非Linq用法

    说到Lambda表达式,几乎所有人的反应就是Linq,不错,Lambda表达式的最大用途确实是在Linq,Lambda表达式本身也是为Linq量身定做的。
    但是Lambda表达式本身只是一个匿名函数的简化版,因此,并不是针对Linq的。换而言之,任何匿名函数可以做的事情,Lambda表达式都可以做。就以Windows Form的程序为例子吧:
    public partial class Form1 : Form
    {

        
public Form1()
        {
            InitializeComponent();
            
this.Click += (sender, e) => MessageBox.Show("Hello world.");
        }
    }
    这也是一个合法的Lambda表达式。可以看出来这里的(sender, e) => MessageBox.Show("Hello world.")是代替了这样一个函数
        private static void SomeMethod(object sender, EventArgs e)
        {
            MessageBox.Show(
"Hello world.");
        }

    当然,csharp 3.0的编译器还为我们做了些事,那就是自动推断出在this.Click +=需要的是一个EventHandler的委托,因此,不需要像csharp 2.0那样需要new EventHandler,编译器帮我们创建了(生成的IL是一样的,只不过可以少写点代码)。
    到这里,会发现Lambda表达式其实根本没做什么事情,只不过是C#语法中加了一种匿名函数的快速而又简单的写法而已。当然,这样的改进是大家所喜欢的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值