C#中delegate的典型应用

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication7
{
    //下面是用来做为委托函数的参数
    class MathClass
    {
        public static int add(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:
                    //实例化委托函数,这里是一个数组,把MathClass做为参数传到委托函数中去,MathClass正式委托给myCalculation[0]
                    myCalculation[0] = new Calculation(MathClass.add);
                    myCalculation[1] = new Calculation(MathClass.minus);

                    //在这里,把参数传给myCalculation[0],就像传给MathClass.add一样,因为已经托管
                    Console.WriteLine(myCalculation[0](a,b));
                    Console.WriteLine(myCalculation[1](a, b));
                    break;

                case 2:
                    break;

                default:
                    return;

            }
        }
   
    }
  
   
   
    class Program
    {
        static void Main(string[] args)
        {
            Handler.EventHandler(1,10,3);

        }
    }
}

posted on 2006-07-11 16:55  beagles  阅读(1183)  评论(0编辑  收藏  举报