lambda表达式

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;
    }

 

posted @ 2017-03-23 22:47  大胖儿在努力  阅读(253)  评论(0编辑  收藏  举报