C#之lambda表达式
lambda表达式:c#之前有匿名函数这个知识点,随着.net版本的更新把匿名函数改成lambda表达式。lambda表达式主要是为了过滤或者晒选数组满足条件的元素,其实就一个函数,主要是作为其他函数的参数
定义lambda函数
<u>*可以把一个方法定义另外一个方法中*</u>
参数1: 目标数组, 参数2: 是一个方法,返回满足的条件,一般都是bool值,观察数组的元素是否满足这个条件
创建一个lambda表达式
// Func 代表一个方法; Func<int, int, bool> 方法的类型(最后一个类型就是返回值)
// Func方法必须有返回值
语法: Func<参数1类型,参数2类型,返回值类型> 表达式名 = (参数1,参数2)=>{方法实现}
实例:
简单方式1
把小括号参数的类型省掉
简单方式2
方法体实现时候如果只有一句代码 可以把return和{}省掉
简单方式3
如果参数只有一个话,参数的小括号可以省掉
和数组结合使用的一些常用方法
<u>*箭头函数写法*</u>
1.Find 查询数组中第一个满足条件的元素
<u>*Find 方法的作用返回第一个满足的元素*</u>
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("第一个小于16的数(箭头函数): "+Array.Find(a2, value => value< 16));
2.FindIndex找到第一个满足条件元素的索引
返回值是索引,当数组内没有满足条件的元素时返回值是-1
<u>*findIndex 不仅仅有找到满足条件的索引值,还有遍历效果*</u>
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine(Array.FindIndex(a2, value => { return value <= 30; }));
3.Findlast() 从后面往前查询第一个满足这个条件的元素
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("FindLast: "+Array.FindLast(a2,value => value >= 18));
4.FindLastIndex() 从后面往前查询第一个满足这个条件的元素索引值
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("FindLastIndex:"+Array.FindLastIndex(a2,value => value >= 18));
5.FindAll() 找到所有满足条件的元素 返回值是一个数组
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
int[] a3 = Array.FindAll(a2, value => value % 2 == 0);Console.WriteLine("FindAll: "+string.Join(",",a3));
6.TrueForAll 判断数组内元素是否都满足条件,
<u>*返回值为true\false。*</u>int[] ints = { 2, 2, 6 };Console.WriteLine("TrueForAll: "+Array.TrueForAll(ints, value => value % 2 == 0));
7.Exists判断数组中是否至少有一个满足条件的元素,
<u>*(只要一个满足了就位true)*</u>
int[] ints = { 2, 2, 5 } ;
Console.WriteLine("Exists: " + Array.Exists(ints, value => value % 2 == 0)) ;
8.ForEach遍历数组,
<u>*参数1:数组 参数2:函数,对数组所有元素进行相同的操作*</u>
int[] i1 = new int[] { 1, 2, 3, 4 };
Array.ForEach(i1, value => Console.WriteLine(value * 3));
9.CopyTo将一个数组的内容复制到另一个数组
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };string[] s2 = new string[6];<u>*// 参数1: 复制的目标数组 参数: 是从哪个位置开始复制的*</u>s1.CopyTo(s2, 1);Console.WriteLine(string.Join(",",s2));
10.SetValue修改索引元素
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
s1.SetValue("迪迦123456", 0);
Console.WriteLine(string.Join(",",s1));
11. GetValue() 获取指定的元素位置 s1[1]
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.GetValue(1));
12.Any()判断数组中是否至少有一个满足条件的元素
?<u>*只要有一个元素满足结果为true (和Exists方法差不多)*</u>
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.Any(value => value.Contains("赛")));
13. All() 必须所有的元素全部满足条件
<u>*如果所有元素满足条件则返回true,否则返回false*</u>
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.All(value => value.Contains("赛")));
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!