.Net delegate和Action以及Func委托的使用Demo

.

public delegate void F1();
public delegate bool F3(int number);
class Program
    {
        static void Main(string[] args)
        {
           //原始委托
            F1 f = Show;
               f+= Show2;
            f();


            Console.WriteLine();

            //匿名委托
            //Action无返回值委托
            Action<string,int> action = delegate (string name, int number)
            {
                Console.WriteLine($"{name},{number}");
            };
            action("张三",8);

            //Action有返回值委托
            Func<int, int> func = delegate ( int number)
            {
                return 0 + number;
            };
            Console.WriteLine(func(8));

            //lambda加持

            //Action无返回值委托
            Action<string, int> action2 =  (name,number)=> Console.WriteLine($"{name},{number}");
            action2("张三", 8);

            //Action有返回值委托
            Func<int, int> func2 =   number=> 0 + number;
            Console.WriteLine(func(8));

            //原始和匿名加lambda委托
            Func<int, bool> func3 = i => i > 5;
            func3(0);

            F3 f3 = isV;
            f3(0);

            Func<int, bool> fun3 = delegate (int i)
            {
                return i > 5; 
            };
            fun3(0);


            //找值

            //方法一
            int[] number = new int[] { 55, 33, 66, 88, 24, 64, 18, 94 };
            IEnumerable<int> enumerables = number.Where(a => a > 50);
            foreach (var item in enumerables)
            {
                Console.Write(item+",");
            }
            //方法二
           IEnumerable<int> result= MyWhere(number,
                delegate (int number) { return number > 50; }
                );
            foreach (var item in result)
            {
                Console.Write(item + ",");
            }
           
            //方法三
            IEnumerable<int> result2 = MyWhere(number,a=>a>50);
            foreach (var item in result2)
            {
                Console.Write(item + ",");
            }

        }
       
        public static void Show() {
            Console.WriteLine("1111");
        }
        public static void Show2()
        {
            Console.WriteLine("2222");
        }
        public static bool isV(int number)
        {
            return number > 5;
        }
        public static IEnumerable<int> MyWhere(int[] number, Func<int, bool> func) {

            foreach (var item in number)
            {
                if (func(item)==true)
                {
                    //进来一次返回出去一次
                    yield return item;
                }
            }
        }
    }
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值