说到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#语法中加了一种匿名函数的快速而又简单的写法而已。当然,这样的改进是大家所喜欢的。
posted on 2007-06-13 20:13  Zhenway  阅读(597)  评论(0编辑  收藏  举报