匿名方法概念:这个方法没有具体名称,只有委托关键字,方法参数,方法体,所以称为匿名方法。
Lambda表达式:就是将匿名方法进一步封装,基本定义规范:(参数)=>{方法体}
总结:
Lambda表达式可以是明确类型,也可以是根据上下文自动推断的类型。
Lambda表达式本身就是匿名方法。
Lambda表达式参数可以是不明确类型,匿名方法参数必须明确。
最后代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace xiaowuTest
{
//定义多个参数的委托
public delegate void Calculaterdelegate(int a, int b);
class Program
{
static void Main(string[] args)
{
test1();
Console.WriteLine("-----------------------------");
calDelegate1(1,2);
Console.WriteLine("-----------------------------");
calDelegate2(1,2);
Console.WriteLine("-----------------------------");
calDelegate3(1, 2);
Console.ReadKey();
}
public static void Add(int a, int b)
{
Console.WriteLine("通过委托调用方法:a+b={0}", a + b);
}
//委托的基本使用方法
public static void test1()
{ //委托一个委托变量
Calculaterdelegate mydelet = Add;
//调用委托变量
mydelet(1, 2);
}
//通过匿名方法,
//匿名方法概念:这个方法没有具体名称,只有委托关键字,方法参数,方法体,所以称为匿名方法
public static Calculaterdelegate calDelegate1 = delegate (int a, int b)
{
Console.WriteLine($"通过匿名方法:a+b={a + b}");
};
//通过Lambda表达式,Lambda表达式就是将匿名方法进一步封装,
//基本定义规范:(参数)=>{方法体}
public static Calculaterdelegate calDelegate2 = ( int a,int b) =>
{
Console.WriteLine($"通过lambda方法:a+b={a + b}");
};
//Lambda表达式还可以更加简化,
public static Calculaterdelegate calDelegate3 = (a, b) => Console.WriteLine($"通过lambda方法:a+b={a + b}");
}
}