lambda表达式 简写=>读作goes to
lambda表达式改造GetMax过程
static void Main(string[] args){ int[] nums=new int[]{33,88,6,9}; //int m=GetMax<int>(nums,compareInt); //①变,使用系统的委托对象 //Func<int,int,bool> f=delegate(int i1,int i2){return i1>i2;} //int m=GetMax(nums,f); //②变形使用匿名方法 //int m=GetMax(nums,delegate(int i1,int i2){return i1>i2;}) //③变,使用goes to语句=> ; 可以省略参数类型,编译器会自动根据委托类型推断 //int m=GetMax(nums,(i1,i2)=>{return i1>i2;}); //④变,忽略return关键字 int m=GetMax(nums,(i1,i2)=>{i1>i2;}); cw(m); } //static bool compareInt(int i1,int i2){return i1>i2; } static T GetMax<T>(T[] objs,Func<T,T,bool> compareFunc){ T max=objs[0]; for(int i=0;i<objs.Length;i++){ if(compareFunc(objs[i],max)){ max=objs[i]; } } return max; }
lambda表达式自定义MyWhere
static void Main(string[] args){ int[] nums=new int[]{3,5,55,99}; IEnumerable<int> r1=nums.MyWhere(i=>i>10); foreach(...) } //静态类才能写扩展方法 public static IEnumerable<T> MyWhere<T>(this IEnumerable<T> data,Func<T,bool> func){ List<T> resultList=new List<T>(); foreach(T item in data){ if(func(item)){//判断遍历到的item是否满足条件 resultList.Add(item); } } return resultList; }