c# 委托的使用(delegate,Func,Action和委托的lamdba形式

1.场景

使用委托实现两数相加并输出的场景,来进行各种委托的实现。

2.代码

  基础方法,两个最简单基础操作方法

        //两数相加方法
        public int Add(int i,int j)
        {
            return i + j;
        }
        //输出结果方法
        public void print(string s)
        {
            Console.Write(s);
        }

(1)最基础的形式

        先定义委托(全局变量):

//加法
delegate int AddHander(int i, int j);
//输出
delegate void Print(string msg);

        使用:

        public void Show1()
        {
            AddHander add = Add;
            Print pr = print;
            //下面两种都可以
            //pr(add(1, 2).ToString());
            pr.Invoke(add.Invoke(1, 2).ToString());
        }

        这样既可得到输出。

(2)基础形式

         不定义全局直接使用。注意Func<T1,T2,T3...,RETURN T> 和Action<T...>的使用

        public void Show2()
        {
            Func<int, int, int> add = Add;
            Action<string> pr = print;
            pr(add(1, 2).ToString());
        }

           或者等价于:

        public void Show3()
        {
            Func<int, int, int> add = new Func<int, int, int>(Add);
            Action<string> pr = new Action<string>(print);
            pr(add(1, 2).ToString());
        }

(3)直接一个方法里面完成所有操作(无需上面定义的Add和print方法,直接完成)

        public void Show4()
        {
            Func<int, int, int> add = new Func<int, int, int>(delegate(int i,int j) {
                return i + j;
            });
            Action<string> pr = new Action<string>(delegate(string s) {
                Console.Write(s);
            });
            pr(add(1, 2).ToString());
        }

(4)直接一个方法里面完成所有操作(无需上面定义的Add和print方法,使用lambda简化委托)

        public void Show5()
        {
            Func<int, int, int> add = new Func<int, int, int>((i,j)=> {
                return i + j;
            });
            Action<string> pr = new Action<string>((s)=> {
                Console.Write(s);
            });
            pr(add(1, 2).ToString());
        }

   注意此处的lamdba形式。此法最为简洁优雅(代码量最小,最整齐)

3.总结

以上即为委托的各种形式的使用方法。其中lamdba尤为简洁美观好用,基础类型较少使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值