匿名方法
匿名方法(anonymous method)允许一个与委托关联的代码被内联地写入使用委托的地方,这使得代码对于委托的实例很直接。除了这种便利之外,匿名方法还共享了对本地语句包含的函数成员的访问。本节将对匿名方法及其使用进行详细讲解。
5.11.1 什么是匿名方法
2.0之前的C#版本中,声明委托的惟一方法是使用命名方法。C#2.0引入了匿名方法,如果使用匿名方法,则不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。简言之以前是委托调用一个方法,现在是直接将方法的代码块作为参数传给委托而不必调用方法。
//定义一个委托
delegate void Del(int y);
//委托调用匿名方法
Del d = delegate(int h) { /* 直接写委托所调用的方法的代码*/ };
5.11.2 匿名方法的使用
ch0510
实例位置:mr\05\sl\Ex05_10
下面通过实例来介绍如何在程序中使用匿名方法。
程序开发步骤如下。
(1)启动Visual Studio 2005,新建一个控制台应用程序,命名为Ex05_10。
(2)在自动生成的Program.cs文件中编写如下代码:
//定义一个委托,用来调用匿名方法
delegate void Writer(string s);
class Program
{
//委托所调用的命名方法:
static void NamedMethod(string k)
{
System.Console.WriteLine(k);
}
static void Main(string[] args)
{
// 委托类调用匿名方法:
Writer w = delegate(string j)
{
System.Console.WriteLine(j);
};
// 调用匿名方法并显示匿名方法被调用:
w("匿名方法被调用。");
Console.WriteLine();
// 委托关联命名方法 " NamedMethod ":,注意在这里多了实例化委托
w = new Writer(NamedMethod);
// 显示命名方法被调用
w("命名方法被调用。");
}
}
实例运行结果如图5.9所示。
图5.9 匿名方法的使用