1。使用匿名方法的时候,可以访问调用它的代码块里面的代码。如:
这里的exploedTimes就可以被匿名方法访问
public static void Main(string[] args)
{
int exploedTimes = 0;
Car c = new Car();
c.Exploed += new Car.CareExploedHandle<Car.CarEventArgs>(c_Exploed);
c.Exploed += delegate(object sender, Car.CarEventArgs e)
{
exploedTimes++;
Console.WriteLine(exploedTimes.ToString());
Console.WriteLine("annoymous method" + e.msg);
};
}
2。使用代理或者事件的时候,不必new xxx代理出来,可以直接写方法名。但是方法的签名要和对应的代理相同,不然会抛出一个编译时错误。
如:下面加入事件的时候,没有new一个代理出来哦。有点象asp.net中前台的代码。比如<asp:button runat = "server" Id="b1" Onclik="b1_Click"/>
class Program
{
public static void Main(string[] args)
{
Car c = new Car();
c.Exploed += c_Exploed;
for (int i = 0; i < 10; i++)
{
c.Accelerate(100);
}
}
static void c_Exploed(object sender, Car.CarEventArgs e)
{
Console.WriteLine(e.msg);
}
}
本文介绍C#中如何使用匿名方法访问局部变量及简化事件处理方式。展示了通过直接指定方法名而非创建代理对象来简化事件绑定的过程。
5万+

被折叠的 条评论
为什么被折叠?



