zoukankan      html  css  js  c++  java
  • 多播委托的理解

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

    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

  • 相关阅读:
    CSS基础——基本单位
    CSS基础——表格
    CSS基础——列表
    Single-Source Shortest Paths
    Maximum Flow
    Breadth-First Search
    Depth-First Search (III)
    Depth-First Search (II)
    Depth-First Search (I)
    Simple Complete Search
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/3029072.html
Copyright © 2011-2022 走看看