using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Lambda表达式使用 { class Program { static void Main(string[] args) { #region C#3.0 之前的订阅代码写法 /* //新建一个button实例 Button button1 = new Button(); button1.Text = "点击我"; //C# 2.0 使用匿名方法来订阅事件 button1.Click += delegate(object sender, EventArgs e) { ReportEvent("Click事件", sender, e); }; button1.KeyPress += delegate(object sender, KeyPressEventArgs e) { ReportEvent("KeyPress事件,即键盘按下事件", sender, e); }; //在C# 3.0之前,初始化对象时,会使用以下代码 Form form = new Form(); form.Name = "在控制台中创建的窗体"; form.AutoSize = true; form.Controls.Add(button1); */ #endregion #region C# 3.0 实现的代码效果如下 Button button1 = new Button() { Text = "点击我!" }; //c# 3.0采用Lamada表达式的方法来订阅事件 button1.Click += (sender, e) => ReportEvent("Click事件", sender, e); button1.KeyPress += (sender, e) => ReportEvent("KeyPress事件,即键盘按下事件", sender, e); // 在C#3.0 中使用对象初始化器 Form form = new Form { Name = "在控制台中创建的窗体", AutoSize = true, Controls = { button1 } }; #endregion //运行的窗体 Application.Run(form); } private static void ReportEvent(string title, object sender, EventArgs e) { Console.WriteLine("发生的事件为:{0}", title); Console.WriteLine("发生事件的对象为{0}", sender); Console.WriteLine("发生事件参数为:{0}", e.GetType()); Console.WriteLine(); Console.WriteLine(); } } }
转载于:https://www.cnblogs.com/xcl461330197/articles/4984987.html