首页 > 代码库 > 【C#进阶】多播委托和委托数组像是一回事~
【C#进阶】多播委托和委托数组像是一回事~
这个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,一下子执行好多个动作,包括重复的动作。这就是我的理解,目前是。
【C#进阶】多播委托和委托数组像是一回事~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。