先看代码:
//申明一个带参数的委托
delegate void DelegateTest(string name);
class Program
{
static void Main(string[] args)
{
DelegateTest testDG1 = new DelegateTest(DelegateTestMethod);
testDG1("命名方式");
DelegateTest testDG2 = delegate(string name)
{
Console.WriteLine(name);
};
testDG2("匿名方法");
DelegateTest testDG3 = x =>
{
Console.WriteLine(x);
};
testDG3("Lambda 表达式");
Console.ReadKey();
}
//创建一个静态方法,传入委托中
static void DelegateTestMethod(string name)
{
Console.WriteLine(name);
}
}
输出:
命名方式
匿名方法
Lambda 表达式
总结:很明显这三种方式中 第一种命名方式最繁琐,而 Lambda 表达式更直接,更具有表达力。
C#在实现匿名函数(匿名方法和Lambda 表达式),是通过隐式的创建一个静态方法或者类(需要捕获变量时),然后通过命名方式创建委托。(引自MSDN)