c#基础知识---委托,匿名函数,lambda

1. 委托

1.1 委托的定义

在C#中,委托是一种引用类型,它可以封装一个或多个方法,并允许以统一的方式调用这些方法。委托通常用于处理事件和回调函数。

delegate void MyDelegate(int x);

上面的代码定义了一个委托类型MyDelegate,它可以引用一个参数为int类型、返回值为void的方法。

1.2 使用委托

可以使用委托来引用一个方法,并通过委托调用该方法。

void PrintNumber(int num)

{

Console.WriteLine("Number: " + num);

}

void Main()

{

MyDelegate del = PrintNumber;

del(10);

}

上面的代码中,将PrintNumber方法赋值给委托del,并通过委托调用PrintNumber方法。

1.3 委托的多播

委托可以引用多个方法,这称为委托的多播。多播委托可以使用"+"或"+="运算符添加方法,使用"-"或"-="运算符移除方法。

void PrintNumber(int num)

{

Console.WriteLine("Number: " + num);

}

void PrintSquare(int num)

{

Console.WriteLine("Square: " + (num * num));

}

void Main()

{

MyDelegate del = PrintNumber;

del += PrintSquare;

del(10);

}

上面的代码中,将PrintNumber和PrintSquare两个方法添加到委托del中,并通过委托调用这两个方法。

2. 匿名函数

2.1 匿名函数的定义

匿名函数是一种不具有方法名称的函数,它可以作为委托类型的参数或局部变量。

在C#中,可以使用匿名方法或lambda表达式来定义匿名函数。

2.2 使用匿名方法

delegate void MyDelegate(int x);

void Main()

{

MyDelegate del = delegate(int num) {

Console.WriteLine("Number: " + num);

};

del(10);

}

上面的代码中,使用匿名方法定义了一个委托del,并通过委托调用匿名方法。

2.3 使用lambda表达式

delegate void MyDelegate(int x);

void Main()

{

MyDelegate del = (num) => Console.WriteLine("Number: " + num);

del(10);

}

上面的代码中,使用lambda表达式定义了一个委托del,并通过委托调用lambda表达式。

3. Lambda表达式

3.1 Lambda表达式的定义

Lambda表达式是一种简洁的语法形式,可以创建匿名函数。它通常由参数列表、箭头符号和函数体组成。

3.2 使用Lambda表达式

List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };

var result = numbers.Where(x => x % 2 == 0);

foreach (int num in result)

{

Console.WriteLine(num);

}

上面的代码中,使用Lambda表达式筛选出numbers列表中的偶数,并将结果存储在result变量中,然后依次打印出偶数。

总结

本文介绍了C#中的委托、匿名函数和Lambda表达式。委托是一种引用类型,可以封装一个或多个方法,并允许以统一的方式调用这些方法。匿名函数是一种不具有方法名称的函数,它可以作为委托类型的参数或局部变量。Lambda表达式是一种简洁的语法形式,可以创建匿名函数。

通过本文的学习,读者可以了解到委托、匿名函数和Lambda表达式的基本概念和使用方法。这些功能在实际编码中非常常用,在处理事件和回调函数等场景中发挥重要作用。

后端开发标签