小白求教:大家看错在哪?
刚学委托,写了下面的一段代码:
namespace Pra_Delegate3{ delegate double MathsOp(double x); //定义一个委托 class Program { static void Main(string[] args) { //Mydelegate myDelegate = new Mydelegate(); MathsOp operation = new MathsOp(Mydelegate.MultiplyBy2);//实例化 operation += new MathsOp(Mydelegate.AddBy2); double x = 1.23; double result = operation(x); Console.WriteLine("{0} multiply by 2 is {1}",x,result); operation -= new MathsOp(Mydelegate.MultiplyBy2); Console.WriteLine("{0} add by 2 is {1}",x,result); Console.Read(); } public class Mydelegate { public static double MultiplyBy2(double x) { return x * 2; } public static double AddBy2(double x) { return x + 2; } } }}MathsOp operation = new MathsOp(Mydelegate.MultiplyBy2);//实例化operation += new MathsOp(Mydelegate.AddBy2);
[解决办法]
不过,用+=时你要清楚你再做什么。对于普通的委托,没有什么大碍。如果是事件,就有所不同了,被注册的回调都会响应的。
[解决办法]
2楼的办法治标不治本,根据文档多播发生的顺序是不一定的(虽然看起来有序)。
根据楼主的需求应该不是要多播。
[解决办法]
因为第一次显示的时候,委托连上有2个方法,所以它返回了链上最后的方法调用,然后你又把链上的方法去掉了一个,链上还有一个方法,所以,还是一样的