在学习LinQ的过程中,最主要的一个阶段就是对于lambda的熟悉使用
1)Lambda介绍
lambda本质上是一个委托,他是匿名委托(匿名函数),其本身是从函数式编程语言中发展而来的。多有的Lambda表达式使用Lambda运算符=>;其左侧是输入的参数,右侧是表达式或者语句块,也就是赋值的意思。Lambda一般和委托合作出现,将表达式直接分配给委托类型,举例如下。
2)举例说明
首先我们需要定义一个委托:
//定义一个委托 public delegate string deleTransfer(string s); //注意方法签名
然后直接委托指向方法,执行就好。再次我们尝试了三种方法,当然第三种是最常用也是我们需要学习的:
在方法1中需要调用的方法:
//将字符串的小写字母转换成大写字母的方法 public string ToPascal(string s) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); }
private void BtnLambda_Click(object sender, EventArgs e) { //Lambda来源‘ //.net Framwork1.0 委托-函数指针 //deleTransfer trans = new deleTransfer(ToPascal); //委托指向方法ToPascal //Console.WriteLine(trans("abcdTFDF")); //最后输出的结果是按照方法ToPascal来执行的 //.net Framwork2.0 匿名方法 //deleTransfer trans = delegate(string s) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); }; //Console.WriteLine(trans("abcdTFDF")); //最后输出的结果是按照方法ToPascal来执行的 //.net Framwork3.5 Lambda表示方法 deleTransfer trans = s => s.Substring(0, 1).ToUpper() + s.Substring(1,5).ToUpper(); Console.WriteLine(trans("aBCdTfdf")); //最后输出的结果是按照方法ToPascal来执行的 }
在其中,我们传入了这样的一个方法,SubString,这是截取需要显示的字符串然后再根据要求显示出来,如上,最后一个方法中,我让其从0开始,指定长度为1,大写显示,从1开始,指定长度为5,小写字母显示,最终输出结果:
在上述代码中,对于trans的传值则是使用了lambda表达式,再此简单的举一个小例子,也只是明白其模样和使用。方便LinQ的使用。
时间: 2024-11-23 14:13:22