刚接触c#不久,对于委派的好处,不是很清楚,先来一段典型的代码:using System;namespace ConsoleApplication1
{
    class Program
    {
        delegate int MathOp(int i1, int i2);
        static void Main(string[] args)
        {
            MathOp op1 = new MathOp(Add);
            MathOp op2 = new MathOp(Multiply);
            Console.WriteLine(op1(100, 200));
            Console.WriteLine(op2(100, 200));
                       //上面的代码完全可以用以下实现,
            //Console.WriteLine(Add(100,200));
            //Console.WriteLine(Multiply(100, 200));
           
            Console.ReadLine();
        }        //静态方法(两个数加相)
        public static int Add(int i1, int i2)
        {
            return i1 + i2;
        }        //静态方法(两个数相乘)
        public static int Multiply(int i1, int i2)
        {
            return i1 * i2;
        }
    }
}
正如上面代码里的一样,感觉用委派做的事,完全不用委派也可以做到,那么C#中的委派到底有什么好处或是作用,存在即合理,微软既然在C#中弄出了一个"委派",肯定有他的用意?哪位给详细解释一下?谢谢

解决方案 »

  1.   

    MathOp op3 = op1 + op2;
    Console.WriteLine(op3(100, 200));
      

  2.   

    引用一个例子
    比如有一个类
    delegate int CompareObject(object left,object right);left>right return 1; equals return 0; else return -1;Class A
    {
       public static void QuickSort(object[] sortArray,CompareObject compareMethod)
       {
          for(int i=0;i<sortArray.Length;i++)
          {
             for(int j=0;j<sortArray.Length;j++)
             {
                 if(compareMethod(sortArray[j],sortArray[i])<0)
                 {
                      object temp=sortArray[i];
                      sortArray[i]=sortArray[j];
                      sortArray[j]=temp;
                 }
             }
          }
          
       }
    }
    这样 可以传入compareMethod(自己定义的委托)来对不同对象进行排序