lambda表达式:c#之前有匿名函数这个知识点,随着.net版本的更新把匿名函数改成lambda表达式。lambda表达式主要是为了过滤或者晒选数组满足条件的元素,其实就一个函数,主要是作为其他函数的参数
<u>*可以把一个方法定义另外一个方法中*</u>
参数1: 目标数组, 参数2: 是一个方法,返回满足的条件,一般都是bool值,观察数组的元素是否满足这个条件
// Func 代表一个方法; Func<int, int, bool> 方法的类型(最后一个类型就是返回值)
// Func方法必须有返回值
语法: Func<参数1类型,参数2类型,返回值类型> 表达式名 = (参数1,参数2)=>{方法实现}
实例:
把小括号参数的类型省掉
方法体实现时候如果只有一句代码 可以把return和{}省掉
如果参数只有一个话,参数的小括号可以省掉
<u>*箭头函数写法*</u>
<u>*Find 方法的作用返回第一个满足的元素*</u>
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("第一个小于16的数(箭头函数): "+Array.Find(a2, value => value< 16));
返回值是索引,当数组内没有满足条件的元素时返回值是-1
<u>*findIndex 不仅仅有找到满足条件的索引值,还有遍历效果*</u>
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine(Array.FindIndex(a2, value => { return value <= 30; }));
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("FindLast: "+Array.FindLast(a2,value => value >= 18));
int[] a2 = {88, 28,17, 32, 16, 10, 31,30 };
Console.WriteLine("FindLastIndex:"+Array.FindLastIndex(a2,value => value >= 18));
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));
<u>*返回值为true\false。*</u>int[] ints = { 2, 2, 6 };Console.WriteLine("TrueForAll: "+Array.TrueForAll(ints, value => value % 2 == 0));
<u>*(只要一个满足了就位true)*</u>
int[] ints = { 2, 2, 5 } ;
Console.WriteLine("Exists: " + Array.Exists(ints, value => value % 2 == 0)) ;
<u>*参数1:数组 参数2:函数,对数组所有元素进行相同的操作*</u>
int[] i1 = new int[] { 1, 2, 3, 4 };
Array.ForEach(i1, value => Console.WriteLine(value * 3));
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };string[] s2 = new string[6];<u>*// 参数1: 复制的目标数组 参数: 是从哪个位置开始复制的*</u>s1.CopyTo(s2, 1);Console.WriteLine(string.Join(",",s2));
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
s1.SetValue("迪迦123456", 0);
Console.WriteLine(string.Join(",",s1));
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.GetValue(1));
?<u>*只要有一个元素满足结果为true (和Exists方法差不多)*</u>
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.Any(value => value.Contains("赛")));
<u>*如果所有元素满足条件则返回true,否则返回false*</u>
string[] s1 = { "迪迦", "赛罗", "盖亚", "赛文" };
Console.WriteLine(s1.All(value => value.Contains("赛")));