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

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

    class MathOperations
{
public static void MultiplyByTwo(double value)
{
Console.WriteLine( "2* {0} = {1}",value,value * );
}
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 = 25
2* 5 = 10
I'm a double. My value is 5

再以多播委托 +号来试下

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

结果是相同的。

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

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

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

上一篇:委托+内置委托方法+多播委托+lambda表达式+事件


下一篇:【小白学C#】谈谈C#多播委托因异常而终止的解决方案