现在学习WinForm编程中的委托和事件。
原来我写事件的时候一般都是这样写的linkLabelCSharpWin.Click += new EventHandler(linkLabelCSharpWin_Click);
void linkLabelCSharpWin_Click(object sender, EventArgs e)
{
    Process.Start("www.csharpwin.com");
}现在看到有些高手是这样写的:linkLabelCSharpWin.Click += delegate(object sender, EventArgs e)
{
   Process.Start("www.csharpwin.com");
};有点不理解,希望高手给解释下。谢谢!

解决方案 »

  1.   

    匿名的委托调用,在方法中调用委托的时候,委托中的代码直接访问方法中局部变量 
    this.button2.Click += delegate(object sender, EventArgs e){ 
        Button b = (Button)sender; 
        Console.WriteLine("Hello {0}", b.Name); 
    }; 
      

  2.   

    linkLabelCSharpWin.Click += delegate(object sender, EventArgs e)
    {
       Process.Start("www.csharpwin.com");
    };甚至可以写成------->linkLabelCSharpWin.Click += (sender, e) => Process.Start("www.csharpwin.com");
      

  3.   

    linkLabelCSharpWin.Click += (sender, e) => Process.Start("www.csharpwin.com");就是所谓的λ表达式。
      

  4.   

    λ表达式 == lambda expression.
      

  5.   

    在C#3.5中·1就可使用Lambda 表达式 
    参考
      

  6.   

    对了,匿名方法是C# 2.0就已经出现了。lambda expression才是3.0开始出现的。