using System; class MathClass{       public static int max(int a,int b)       {              return(a>b?a:b);       }       public static int min(int a,int b)       {              return(a<b?a:b);       }       public static int sub(int a,int b)       {              return (a+b);       }       public static int minus(int a,int b)       {              return (a-b);       }}class Handler{       private delegate int Calculation(int a, int b);       private static Calculation[] myCalculation=new Calculation[2];       public static void EventHandler(int i,int a,int b)       {              switch (i)              {                     case 1:                            myCalculation[0]=new Calculation(MathClass.max);                            myCalculation[1]=new Calculation(MathClass.min);                            Console.WriteLine(myCalculation[0](a,b));                            Console.WriteLine(myCalculation[1](a,b));                            break;                     case 2:                             myCalculation[0]=new Calculation(MathClass.sub);                            myCalculation[1]=new Calculation(MathClass.minus);                            Console.WriteLine(myCalculation[0](a,b));                            Console.WriteLine(myCalculation[1](a,b));                            break;                     default:                            return;              }       }}class Test{       static void Main()       {              Handler.EventHandler(1,10,3);              Handler.EventHandler(2,10,3);       }}
这是一个完整的例子

解决方案 »

  1.   

    考试吗?好像很简单的样子:)
    delegate int T(int A,int B);static void ABC(T C)
    {
    C(1,2);
    }static int EFG(int E,int F)
    {
    return E*F;
    }
    [STAThread]
    static void Main(string[] args)
    {
       T myDelegate=new T(EFG);
       ABC(myDelegate);
       return;
    }
      

  2.   

    namespace ZZ
    {
    delegate void delegate1(string str);
    delegate void delegate2(int dd);
    class ZZConsole
    {
    [STAThread]
    static void Main(string[] args)
    {
    delegate1 d1= new delegate1(StrMethod);
    delegate2 d2= new delegate2(IntMethod);
    d1("代理包装字符串方法");
    d2(111111);

    Console.ReadLine();
    }
    public static void  StrMethod(string str)
    {
    Console.WriteLine(str);
    }
    public static void  IntMethod(int dd)
    {
    Console.WriteLine(dd.ToString());
    } }
    }就是安全的函数指针;
    写一个函数
    public string GetValue(int i)
    {
    i.ToString();
    }
    //定义代理
    delegate string GetValuehandler(int i);
    //使用安全包装
    GetValuehandler mydele = new GetValuehandler(GetValue);
    //执行
    string s = mydele(99);
    相当于执行了
    string s = GetValuehandler(99);