最初单语句方法使用委托的方法如下例所示:
delegate int CalculDelegate(int x, int y);
private int Add(int x, int y)
{
return x + y;
}
public void Calculate()
{
CalculDelegate addDelegate = new CalculDelegate(Add);
int sum = addDelegate(1, 2);
}
其中Add是单语句方法。
后来引入匿名方法,Add方法就省了,上述代码演变成如下所示:
delegate int CalculDelegate(int x, int y);
public void Calculate()
{
CalculDelegate addDelegate = delegate (int x, int y) { return x + y; };
int sum = addDelegate(1, 2);
}
再后来引入lambda表示式,形式更简洁,如下:
delegate int CalculDelegate(int x, int y);
public void Calculate()
{
CalculDelegate addDelegate = (x, y) => x + y;
int sum = addDelegate(1, 2);
}
其中“=>"读为“goes to"
再后来引入Func<>,连定义委托也省了,演变成如下:
public void Calculate()
{
Func<int, int, int> addDelegate = (x, y) => x + y;
int sum = addDelegate(1, 2);
}
注意Func的最后一个参数代码返回。
多语句方法支持
当然,lambda表示式也可以支持多语句方法,如下例 :
public void Calculate()
{
Func<int, int, int> addDelegate = (x, y) =>
{
x=2*x;
y=2*y;
return x + y;
}
int result = addDelegate(1, 2);
}