C#匿名函数用法详解(附带实例)
C# 中的函数也可想成方法,每个方法都有一个名称,C# 从 2.0 起就提供一种没有名称的方法称为匿名函数(anonymous method)。
匿名函数使用 delegate 关键词定义,然后再为此委托的对象设计方法的内容,整个语法定义如下:
【实例 1】创建含一个参数的匿名函数。
【实例 1】匿名函数引用外部变量 bonus,所以实际成绩是 sc 加上 bonus 的结果。
【实例 2】把匿名函数当作参数传送的实例。
匿名函数使用 delegate 关键词定义,然后再为此委托的对象设计方法的内容,整个语法定义如下:
delegate( 参数列 ) { xxxx; // 相关程序代码 };
【实例 1】创建含一个参数的匿名函数。
ComputerLang program = delegate(string lang) // 含一个参数的匿名函数 { Console.WriteLine($"我最爱的程序语言:{lang}"); }; program("C#"); public delegate void ComputerLang(string x); // 声明委托执行结果为:
我最爱的程序语言:C#
C#匿名函数引用外部的变量
匿名函数中可以引用外部的变量,详情可以参考下列实例。【实例 1】匿名函数引用外部变量 bonus,所以实际成绩是 sc 加上 bonus 的结果。
int bonus = 10; FinalScore score = delegate(int sc) { sc += bonus; // bonus 是外部变量 Console.WriteLine($"最后成绩:{sc}"); }; score(80); public delegate void FinalScore(int value);执行结果为:
最后成绩:90
C#把匿名函数当作参数传送
匿名函数也可以作为另一个方法的参数传送。【实例 2】把匿名函数当作参数传送的实例。
static void MyPet(ShowPet pet, string color) { color = "棕色 + " + color; pet(color); } MyPet(delegate(string color) // 这是匿名函数当作参数 { Console.WriteLine($"我的宠物是 {color}"); }, "浅灰色"); public delegate void ShowPet(string x);执行结果为:
我的宠物是 棕色 + 浅灰色