委托是什么?我搞不明白,谁能帮我详细解释下,顺便附个小例子,谢谢啦

解决方案 »

  1.   

    http://topic.csdn.net/u/20100210/10/510b03a7-9496-40dd-9595-bc694e1546f7.html
    这里有个进度条程序
    很详细的
      

  2.   

    委托的作用就是把函数作为参数来使用。
    一般的函数int add(int a,int b)
    {
        return a+b;
    }
    int sub(int a,int b)
    {
        return a-b;
    }
    int multiplication(int a,int b)
    {
        return a*b;
    }
    int division(int a,int b)
    {
        return a/b;
    }
    int run(int operator_index,int a,int b)
    {
        switch(operator_index)
    {
    case 0:
    return add(a,b);
    break;
    case 1:
    return sub(a,b);
    break;
    case 2:
    return multiplication(a,b);
    break;
    case 3:
    return division(a,b);
    break;
    }
    }修改为委托的方式int add(int a,int b)
    {
        return a+b;
    }
    int sub(int a,int b)
    {
        return a-b;
    }
    int multiplication(int a,int b)
    {
        return a*b;
    }
    int division(int a,int b)
    {
        return a/b;
    }
    //定义委托
    delegate int operateHandler(int a,int b);
    //定义委托数组
    operateHandler[] ops = {add,sub,multiplication,division};
    operateHandler GetOperatorDelegate(int operator_index)
    {
        //根据索引返回一个委托实例
    if(operator_index<0 || operator_index>=ops.Length) return ops[0];
    return ops[operator_index];
    }
    //调用地方
    int run(int operator_index,int a,int b)
    {
    //这里直接用返回的委托来操作,就在最终的run函数内,不用那么多判断,减少代码维护量
    operateHandler op = GetOperatorDelegate(operator_index);
    return op(a,b);
    }