您的位置:首页 > 其它

Lambda表达式

2016-06-04 21:44 483 查看
C#的Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。语法如下:

形参列表=>函数体

函数体多于一条语句的可用大括号括起。

Lambda表达式写起来比较简洁,但是对于初学者来说确实是比较费劲的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LambdaDemo
{
class Program
{
static void Main(string[] args)
{
string[] names = { "agen","balen","coure","apple"};
//这是利用委托写的代码
string[] findnameArrA = Array.FindAll<string>(names, delegate(string v) { return v.StartsWith("a");});
//这是利用委托写的代码
string[] findnameArrB = Array.FindAll<string>(names,s=>s.StartsWith("a"));

//这是利用委托写的代码
Console.WriteLine("findnameArrA.Count:  " + findnameArrA.Length);
//这是利用委托写的代码
Console.WriteLine("findnameArrB.Count:  " + findnameArrB.Length);

Console.ReadLine();
}
}
}


从上面的例子中我们看到,我们不需要知道委托或者Lambda表达式到底做了什么,我们只要告诉委托或者Lambda表达式我们需要什么结果,但是具体的实现,由他们自己执行。

相对于委托来说,Lambda表达式确实简单多了。

接着上一次的继续更新 。。。。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LambdaDemo
{
class Program
{
static void Main(string[] args)
{
//单行代码
//如果只有一个参数,那么只写出参数名就足够了
Func<string, string> oneParam = s => String.Format("change uppercase{0}",s.ToUpper());
//如果委托使用的是多个参数,就把参数名放在花括号中,这里参数x,y的类型是double,
Func<double, double, double> twoParam = (x, y) => x * y;
Console.WriteLine(twoParam(5,9));

//多行代码
/*在这个Func<double, double, bool>尖括号里面,
* 前两个是参数,最后一个是返回值
* bigerAndLittle 是这个lambda式子的名称,相当于方法名,
* 后面一个=跟着(x, y),这是参数,=>后面跟着一个花括号,里面就是实现的具体方法
*
*/
Func<double, double, bool> bigerAndLittle = (x, y) =>
{
bool flag = false;
if (x > y)
{
flag = true;
}
else {
flag = false;
}

return flag;
};
Console.WriteLine(bigerAndLittle(9,8));
Console.ReadLine();
}
}
}


我喜欢在代码中加注释,旁白写的少了一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: