历史
2.0之前 委托——>2.0后 匿名变量——>3.0后 Lambda表达式
代码之间的区别
委托
delegate int calculator(int x, int y); //定义委托
static void Main()
{
calculator cal = new calculator(Adding);
int He = cal(1, 1);
Console.Write(He);
}
// 加法
public static int Adding(int x, int y)
{
return x + y;
}
匿名方法
delegate int calculator(int x, int y); //定义委托
static void Main()
{
calculator cal = delegate(int num1,int num2)
{
return num1 + num2;
};
int he = cal(1, 1);
Console.Write(he);
}
Lambda表达式
delegate int calculator(int x, int y); //定义委托
static void Main()
{
calculator cal = (x, y) => x + y;//Lambda表达式,很简洁,Linq类似
int he = cal(1, 1);
Console.Write(he);
}
Func<T>委托
T 是参数类型,这是一个泛型类型的委托,用起来很方便。
static void Main(string[] args)
{
Func<int, int, bool> gwl = (p, j) =>
{
if (p + j == 10)
{
return true;
}
return false;
};
Console.WriteLine(gwl(5,5) + ""); //打印‘True’,z对应参数b,p对应参数a
Console.ReadKey();
}
说明:从这个例子,我们能看到,p为int类型,j为int类型,返回值为bool类型。