最初單語句方法使用委託的方法如下例所示:
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);
}