委托是方法的方法,委托和被委托方法有相同的参数和返回值。
//被委托的方法
public int Add(int x, int y)
{
return x y;
}
//1,原生态的委托
CalculateAdd ca = new CalculateAdd(Add);
Response.Write("原生态的委托:" ca(5, 6) "<br/>");
//2.把方法体赋给委托
CalculateAdd ca2 = delegate(int x, int y) { return x y; };
Response.Write("把方法体赋给委托:" ca2(5, 6) "<br/>");
//3.使用定义好的Func
Func<int, int, int> add = new Func<int, int, int>(delegate(int x, int y) { return x y; });
Response.Write("使用定义好的Func:" add(5, 6) "<br/>");
//4.简化Func
Func<int, int, int> add2 = delegate(int x, int y) { return x y; };
Response.Write("简化Func:" add2(5, 6) "<br/>");
//5.lamuda表达式
Func<int, int, int> add3 = (int x, int y) => { return x y; };
Response.Write("lamuda表达式:" add3(5, 6) "<br/>");
//6.lamuda简化
Func<int, int, int> add4 = (x, y) => { return x y; };
Response.Write("lamuda简化:" add4(5, 6) "<br/>");
Func 有返回值的委托
Action 无返回值的委托