C#之lambda表达式

2024-01-10 10:28:36

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("赛")));

文章来源:https://blog.csdn.net/qq_3517289697/article/details/135490925
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。