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

C#匿名函数用法详解(附带实例)

C# 中的函数也可想成方法,每个方法都有一个名称,C# 从 2.0 起就提供一种没有名称的方法称为匿名函数(anonymous method)。

匿名函数使用 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);
执行结果为:

我的宠物是 棕色 + 浅灰色

相关文章