|
Lambda表达式是一个匿名方法,他可以包含一个表达式或者语句块,他能够创造委托或表达式树类型。
//Demo -带一个参数的Lambda表达式 namespace TestLambda { //声明一个委托,包含一个int型参数 delegate int del(int n);
public class MyLambda { public int TestMethod(int n) { ///利用Lambda表达式构造一个委托 /// x => x * x 表达式表示一个方法此方法等同于 /// public int MethodName(int x) /// { /// return x*x; /// } /// 由此可以看出,=>左边x表示匿名方法的参数,右边 x*x 表示方法体 /// 这行代码可以总结为:实例化一个委托,此委托是用计算传入整型参数的平方 /// 如果将Lambda表达式改变为一个方法的话,则以下这行代码可以替换 /// del myDel=new del(MethodName); del myDel = x => x * x;
///调用委托,实质调用Lambda表达式进行计算 int result = myDel(n); return result; }
} class Program { static void Main(string[] args) { MyLambda my = new MyLambda(); ///测试Lambda表达式 int result = my.TestMethod(10); Console.WriteLine(result); ///输出结果为:100
}
} }
//Demo2--带两个参数的及不带任何参数的Lambda表达式 namespace TestLambda {
/// <summary> /// 声明一个委托,包含两个int型参数 /// </summary> /// <param name="n"></param> /// <param name="m"></param> /// <returns></returns> delegate int del(int n,int m);
/// <summary> /// 不带参数的委托 /// </summary> /// <returns></returns> delegate int delNoPar();
public class MyLambda { public int TestMethod(int n,int m) { ///利用Lambda表达式构造一个委托 ///Lambda表达式的参数x,y不需要事先声明,也可以不指明类型,当然也可以指明 ///如:(int x,int y)=>x*y; ///完整的表达式是:del myDel=(int x,int y)=>x*y;
del myDel = (x,y)=> x * y;
///不带任何参数的Lambda表达式 ///利用()来表示空参 ///这行代码表示:要返回10*5的值 delNoPar testDel = () => 10 * 5; Console.WriteLine(testDel());
///调用委托,实质调用Lambda表达式进行计算 int result = myDel(n,m); return result; }
} class Program { static void Main(string[] args) { MyLambda my = new MyLambda(); ///测试Lambda表达式 int result = my.TestMethod(10,3); Console.WriteLine(result);
}
} } 总结: 1.Lambda表达式,是匿名方法的一个替代,但是更加灵活 2.Lambda表达式,可以包含参数,也可以不包含,不包含时要用()表示 3.Lambda表达式参数可以显示指明类型,也可以不指定,由程序自动分析获得参数类型
|
一共有 0 条评论