.net中的各种委托用法(一)

20 篇文章 0 订阅

随这net的不断升级,委托也出现了这三者。
(Delegate、Action、Func)
应用场景比如跨线程更新winform UI,线程调用处理等等。
1,Delegate 委托关键字 ,实际是声明的方法原型 ,即参数和返回类型

static void Main(string[] args)
        {
            reslt = 0;

            DeleMeath deleMeathADD = new DeleMeath(add);  //实例化委托,传入符合委托原型的方法名

            int resOne = deleMeathADD(5, 6);

            Console.WriteLine("第一种方式的委托调用,结果是{0}", resOne);

            int resTwo = deleMeathADD.Invoke(1, 2);

            Console.WriteLine("第二种方式的委托调用,结果是{0}", resTwo);

            AsyncCallback asyncCallback = new AsyncCallback(AsyncCallbackMath);

            IAsyncResult result = deleMeathADD.BeginInvoke(1, 5, asyncCallback, null); //开始委托的异步,异步主要是不会阻塞线程

            reslt = deleMeathADD.EndInvoke(result); //结束异步


            //下面是多波委托,有点和事件附加类似
            DeleMeath m, n, c, d;
            m = add;  //加法
            n = Remo;  //减法
                       //c = m + n;  //减法,委托n
                       //c = n + m;  //加法,委托m
                       // c = m - n;  //加法,委托n
            c = n - m;  //加法,委托m

            Console.WriteLine("多播的m值为{0}", m(1, 2));
            Console.WriteLine("多播的n值为{0}", n.Invoke(6, 2));
            Console.WriteLine("多播的c值为{0}", c.Invoke(1, 2));

            Console.ReadKey();
        }


        static int reslt = 0;

        static void AsyncCallbackMath(IAsyncResult result)
        {

            if (result.IsCompleted)  //回调
            {
                Console.WriteLine("委托异步调用完成,计算结果是{0}", reslt);

            }
        }

        delegate int DeleMeath(int parmOne, int parmTwo);  //声明一个委托

        static int add(int a, int b)  //符合委托 原型的方法
        {
            return a + b;
        }

        static int Remo(int a, int b)  //符合委托 原型的方法
        {
            return a - b;
        }

运行结果就是这样的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值