委托支持多路广播是什么概念,与委托链什么关系,是一个意思吗?很多地方都讲,委托支持多路广播,可是又没有说,什么是多路广播,
另外又提到委托链,就是一个委托可以维护一个方法列表,这个列表中有多个方法,形成一个链条,
我想问,二者有区别和联系吗?

解决方案 »

  1.   

    好像只是翻译的不同吧。英文叫multicast delegates, 也有的叫Combine Delegates参考msdn:
    How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)
      

  2.   

    你看看策略模式就明白了。一个意思。多播委托的意思关键是多播,为什么叫多播,对比一下函数指针,c/c++函数指针是一个函数的地址,定义一个函数指针类型,可以传递指针,让其他的地方,调用方法可配置。
    委托也能实现吧函数调用的签名做参数传递给别人,但不同的是一个委托不一定对应一个函数,而是一个委托可以对应多个函数。比如public class DelegateTestClass
    {
        //声明一个委托,这里只写签名
        public delegate void GetResultHandler(double a, double b);
        public void Add(double a, double b) 
        {
            checked 
            {
                Console.WriteLine("{0}+{1}={2}", a, b, a + b);
            }
        }
        public void Sub(double a, double b)
        {
            checked
            {
                Console.WriteLine("{0}-{1}={2}", a, b, a - b);
            }
        }    public void Multiplication(double a, double b)
        {
            checked
            {
                Console.WriteLine("{0}*{1}={2}", a, b, a * b);
            }
        }
        public void Division(double a, double b)
        {
            checked
            {
                Console.WriteLine("{0}/{1}={2}", a, b, a / b);
            }
        }
        public void Test()
        {
            GetResultHandler invoker = new GetResultHandler(Add);//加法
            Console.WriteLine("加法");
            invoker(2, 3);
            Console.WriteLine("加法、减法");
            invoker += Sub;//添加减法
            invoker(2, 3);                
            invoker += Multiplication;//添加乘法
            Console.WriteLine("加法、减法、乘法");
            invoker(2, 3);                
            invoker += Division;//添加除法
            Console.WriteLine("加法、减法、乘法、除法");
            invoker(2, 3);
        }
    }
    调用方法是同样的,但执行的方法是可以配置的。