什么是lamdba表达式?
C#之前有匿名函数这个知识点,随着.NET版本的更新把匿名函数改成lamdba表达式
lamdba表达式主要是为了过滤或者筛选数组满足条件的元素,其实就一个函数,主要是作为其他函数的参数
就比如说一个例子:让你筛选集合当中满足年龄大于十九的人,我们平时的思路,就是先便利整个数组,使用if条件判断,把满足条件的元素打印出来
就比如下图显示:
但是现在,我们也可以通过lamdba表达式实现筛选功能
lamdba表达式(函数):首先定义lamdba函数
首先我们先来列举一下平常常用的解决方案
1.可以把一个方法定义到另外一个方法中
2.有返回值的方法
3.定义整型数组,集合保存元素
(Find--方法)查找满足条件的第一个元素,但是在合格必须自己写,参数是函数写筛选的条件
创建一个lamdba表达式
1.lamdba创建一个方法,需要有具体的格式
Func 代表一个方法;Func<int, int, bool> 方法的类型
Func<参数一类型,参数二类型,返回值类型> 表达式名 = (参数一,参数二)=>{方法实现}
Func<int, int, bool> f1Name = (int a, int b) =>
{
return a > b;
};
Console.WriteLine(f1Name(30,10));
2.lamdba简写方式
计算和的lamdba表达式,把小括号参数的类型省掉
Func<int, int, int> f2Name = (a, b) =>
{
return a + b;
};
Console.WriteLine(f2Name(10,20));
3.方法体实现时候如果只有一句代码,可以把return和 { } 省略掉
Func<int,int,bool> f3Name = (a,b)=> a % b == 0;
Console.WriteLine(f3Name(9,3));
4.如果参数只有一个的话,参数的小括号可以省掉
Func<int, int> f4Name = a => a * 2;
Console.WriteLine(f4Name(10));
5.关于数组
int[] i1 = new int[] { 1, 2, 3 };
//find 遍历的作用,a是数组的元素
Console.WriteLine(Array.Find(i1, a => a % 2 == 0));
List泛型集合常用的lamdba表达式的地方
List<int> list = new List<int>(); // 放几个人的年龄
list.Add(9);
list.Add(8);
list.Add(20);
平常我们需要遍历list,都是使用for循环
1.ForEach 遍历函数,x就是每一个元素
list.ForEach(x => Console.WriteLine(x));
2.RemoveAll 一处满足条件的所有的元素,参数lamdba表达式
list.RemoveAll(x => x % 2 == 0);
Console.WriteLine(list.Count);//0
3.Any 任何一个元素满足条件即可
Console.WriteLine(list.Any(x => x % 2 == 0));
4.All 每一个元素都得必须满足条件
Console.WriteLine(list.All(x => x % 2 == 0));
5.Exists 是否存在满足条件的元素
Console.WriteLine(list.Exists(x => x % 3 == 0));
6.FindLast 找到满足条件的最后一个元素
Console.WriteLine(list.FindLast(x => x % 2 == 0));
ok,这基本就是关于lamdba表达式的有关的知识了
如果有关于不详细的知识点的话,请各位大佬多多关照