【问题标题】:lambda expression and event handler?lambda 表达式和事件处理程序?
【发布时间】:2012-10-09 00:01:35
【问题描述】:

有人向我提到c#支持使用lambda表达式作为事件处理程序,有人可以与我分享一些关于这方面的参考吗?

首选代码 sn-p。

【问题讨论】:

    标签: c# .net c#-4.0


    【解决方案1】:

    您可以使用 lambda 表达式来构建一个匿名方法,该方法可以附加到一个事件。

    例如,如果您使用ButtonLabel 创建一个Windows 窗体,您可以在构造函数中(InitializeComponent() 之后)添加:

     this.button1.Click += (o,e) =>
         {
            this.label1.Text = "You clicked the button!";
         };
    

    这将导致标签在单击按钮时发生变化。

    【讨论】:

    • 是的。关于添加和删除匿名事件处理程序,我还想指出这一点:stackoverflow.com/questions/2051357/…
    • @devshorts 是的。如果您也需要退订,那也不一定很好。
    • 大括号对于单语句方法体不是多余的吗?
    • @Superbest 对于单语句体来说,它们不是必需的——不过,它们不会伤害任何东西,而且在阅读这样的帖子时会更清楚一些,这就是我写的原因就是这样。
    【解决方案2】:

    试试这个例子

    public Form1()
    {
        InitializeComponent();
        this.button1.Click += new EventHandler(button1_Click);
    }
    
    void button1_Click(object sender, EventArgs e)
    {
    }
    

    上面的事件处理程序可以用这个 lambda 表达式重写

    public Form1()
    {
        InitializeComponent();
        this.button1.Click += (object sender, EventArgs e) = >
        {
            MessageBox.Show(“Button clicked!”);
        };
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多