首页 > 编程笔记 > C#笔记 阅读:1

C#匿名方法的用法(附带实例)

匿名方法是 C# 2.0 引入的特性,并通过 C# 3.0 的 Lambda 表达式得到了极大的扩展。匿名方法类似于 Lambda 表达式,但是没有以下特性:
匿名方法的写法是在 delegate 关键字后面跟上参数的声明(可选),然后是方法体。例如:
Transformer sqr = delegate (int x) { return x * x; };
Console.WriteLine(sqr(3));   // 9

delegate int Transformer(int i);

第一行代码语义上等同于下面的 Lambda 表达式:
Transformer sqr = (int x) => { return x * x; };
或者更简单地:
Transformer sqr = x => x * x;
匿名方法和 Lambda 表达式捕获外部变量的方式是完全一样的,而且它们都可以添加 static 关键字获得静态 Lambda 的行为。

完全省略参数的声明是匿名方法独有的特性(即使委托需要这些参数声明),该特性尤其适用于声明一个具有空事件处理器的事件:
public event EventHandler Clicked = delegate { };

这样,在触发事件时就避免了 null 检查。下面的写法是合法的:
// Notice that we omit the parameters:
Clicked += delegate { Console.WriteLine("Clicked"); };

相关文章