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();
}
}
}