【发布时间】:2015-12-09 22:01:23
【问题描述】:
自从我开始学习 C# 以来,我已经看到了一些处理事件的方法。假设我有一个这样的 XAML 按钮:
<Button x:Name="button" Content="Click me!"/>
给定这个按钮,我可以通过多种方式连接点击事件:
-
修改按钮的
Click属性,使其指向后面代码中的一个方法,如:<Button x:Name="button" Content="Click me!" Click="button_Click"/>然后将
button_Click方法添加到代码中:private void button_Click(object sender, RoutedEventArgs e) { button.Content = "Ow >_<"; } -
通过后面代码中的委托处理事件:
button.Click += delegate { button.Content = "Ow >_<"; }; -
通过后面代码中的 lambda 表达式处理事件:
button.Click += (object sender, RoutedEventArgs e) => { button.Content = "Ow >_<"; };
鉴于这三种方法,我有几个问题:
- 这些方法之间的根本区别是什么。
- 在任何情况下应该使用一种方法而不是另一种方法。我见过类型 1 主要用于 WPF 和 WinRT 应用程序,但其他两种我只有在使用 Xamarin 时才真正见过。
【问题讨论】:
标签: c# event-handling