多播委托的理解

     多播委托就是让一个委托能有若干个方法去执行,先看一个代码:

delegate int DelegateFunction(int a, int b);
    class Program 
    { 
        static void Main(string[] args) 
        { 
            DelegateFunction test = new DelegateFunction(Add); 
            test += Minus; 
            Console.WriteLine(test(2, 1)); 
            Console.ReadKey();
        } 
        static int Add(int x, int y)
        {
            Console.Write("X + Y:"); 
            return x + y; 
        } 
        static int Minus(int x, int y) 
        {
            Console.Write("X - Y:"); 
            return x - y; 
        } 
    }

 用+=就可以建立多播委托,委托test原来有一个add方法,又+=一个Minus方法;

以上代码执行的结果是 X+Y:X-Y:1

Add方法的值没有返回回来,因为追加了委托之后就返回最后一个追加上的委托计算出的值;

需要用遍历才能让每个追加的委托返回值,需做以下修改

delegate int DelegateFunction(int a, int b);
    class Program 
    { 
        static void Main(string[] args) 
        { 
            DelegateFunction test = new DelegateFunction(Add); 
            test += Minus; 
            foreach (DelegateFunction func in test.GetInvocationList()) 
            { 
                Console.WriteLine(func(2, 1)); 
            }
            Console.ReadKey();
        } 
        static int Add(int x, int y) 
        { 
            Console.Write("X + Y:"); 
            return x + y; 
        } 
        static int Minus(int x, int y) 
        { 
            Console.Write("X - Y:"); 
            return x - y; 
        } 
    }

 输出结果:

  X+Y:3

   X-Y:1

posted @ 2013-04-18 17:25  白菜帮子  阅读(231)  评论(0编辑  收藏  举报