委托

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
Action<int[]> action = show;
show(numbers);

 

public static void show(int [] intArray){

            foreach (int i in intArray)
            {
                Console.WriteLine(i);
            }
        }

 

对于函数返回值为空的情形,可以使用Action泛型委托

 

 

Demo1:数组元素/2;

     //method1:使用匿名方法
                //Func<int, double> func = delegate(int x)
                //{
                //    return  x / 2.0;
                //};

                //method2:Lambda.
                Func<int, double> func = x => x / 2.0;

                int[] ints = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
                IEnumerable<double> items = ints.Select(func);
                foreach (double d in items)
                {
                    Console.WriteLine(d);
                }

 

Demo2:数组元素转换成大写

      Func<string, string> func = delegate(string x)
                {
                    return x.ToUpper();
                };

                string[] strs = { "one", "two", "three" };

    //使用了匿名对象

               var items =  strs.Select<string,string>(func);              
               foreach (var i in items)
               {
                   Console.WriteLine(i);
               }

 

Demo3: 将demo2改写成匿名方法

     string[] strs = { "one", "two", "three" };

               var items =  strs.Select<string,string>(delegate(string x)
                {
                    return x.ToUpper();
                });
              
               foreach (var i in items)
               {
                   Console.WriteLine(i);
               }

 

Demo4:将Demo2改写成Lambda表达式

 

    string[] strs = { "one", "two", "three" };

    //lambda表达式

               var items = strs.Select(str => str.ToUpper());              
               foreach (var i in items)
               {
                   Console.WriteLine(i);
               }

 

 3.Predicate 委托 Demo

 List<int> list = new List<int>();
                list.Add(0);
                list.Add(1);
                list.Add(10);
                list.Add(3);
                list.Add(13);

                //method1:匿名方法
                //Predicate<int> pred = delegate(int x)
                //{
                //    return x > 5 ? true : false;
                //};

            //method2:Lambda
                Predicate<int> pred = x =>
                {
                    return x > 5 ? true : false;
                };

                int num =  list.Find(pred);
                System.Console.WriteLine(num);
                int index = list.FindIndex(pred);
                System.Console.WriteLine("index=" + index);

                List<int> all = list.FindAll(pred);
                foreach (int i in all)
                {
                    Console.WriteLine(i);
                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值