【C#进阶】多播委托和委托数组像是一回事~

本文通过MathOperations类的实例介绍了C#中Action委托的使用方式,展示了如何利用委托数组和多播委托实现对不同操作的组合调用。

这个MathOperation类有三静态方法,参数都是double,并且没有返回值,考虑用Action<>() 这种预定义的委托哦

    class MathOperations
    {
        public static void MultiplyByTwo(double value)
        {
            Console.WriteLine( "2* {0} = {1}",value,value * 2);
        }
        public static void Square(double value)
        {
            Console.WriteLine("{0}* {1} = {2}", value, value, value*value );

        }
        public static void Introduction(double value)
        {
            Console.WriteLine("I'm a double. My value is {0}", value);

        }
    }

书上提到了委托数组,我们来定义一个。里面放三个方法。

            Action<double>[] delegateList =
            {
                MathOperations.MultiplyByTwo,
                MathOperations.Square,
                MathOperations.Introduction
            };

我这样调用这个委托。

            foreach(var del in delegateList)
            {
                del(5);
            }

输出:

5* 5 = 25
2* 5 = 10
I'm a double. My value is 5

 

再以多播委托 +号来试下

            Action<double> operations = MathOperations.MultiplyByTwo;
            operations += MathOperations.Square;
            operations += MathOperations.Introduction;
            operations(5);

结果是相同的。

不过书上提到这个方法不错

 

        public static void ProcessAndDisplayNumber(Action<double> operations, double value)
        {
            operations(value);
        }

举个栗子,打人,亲人,骂人,掐人,这4个动作都需要一个人作为你动作的对象。 我是一个action委托<in 人>,你可以让我打人,骂人,骂人*2,一下子执行好多个动作,包括重复的动作。这就是我的理解,目前是。

转载于:https://www.cnblogs.com/jin-wen-xin/p/6101964.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值