http://blog.csdn.net/lynnlin1122/archive/2008/06/21/2573498.aspx  可以参考这个啊

解决方案 »

  1.   

    委托:其实就是一个函数指针,如果你有C语言基础就好理解,如果你没有C语言基础,那么委托就是一个对函数体的封装,通过一个具体的委托实例对象能确定一个具体的函数在.net中,是不能把函数当作变量、参数等方式存储或传递的(C等语言中,函数名就是一个指向函数入口指针的变量名),委托就可以为了解决这个问题事件:顾名思义,就是发生了一件事情,这个事情可以是一个状态的改变、可以是具体内容的修正等等,你的程序在运行过程中不断的有内容、状态、信息等在改变,这些改变都可以当作一个事件来看待。所有的这些改变中,有些改变是有意义的,有些改变是没有意义或意义不大的,有些改变是我们关心的,有些改变是可以忽略的。当我们对那些有意义的或者感兴趣的或者关心的改变进行关注的时候,我们就需要对这些改变定义一个事件,然后告诉我们xx改变了(xx事件发生了)。当某个事件发生后,我们希望能对发生的做些什么,于是就有了事件的触发(在.net中也就是调用事件触发函数“On事件名”,比如OnClick等),事件触发过程中检查我们的需求(对这个事件发生时需要做的事情),如果有需求(绑定了事件代理)就执行相应的代理函数(这里的代理函数就是以委托的方式连接的)。虚方法:就是空虚的方法,当你定义了一个方法为虚方法时,就意味着这个方法允许在继承的子类中被改写(这个改写就是重载),在对方法进行改写时,子类可以根据自身的需要执行的具体的改写,包括是否要调用基类的相应方法以及在什么位置调用。方法被重载后,基类的方法就不能被外部直接调用了,只能在派生的子类中使用明显的前缀限定(base.)来调用,而且也仅仅只能调用父类中被重载的方法,而不能调用祖类中被重载的方法。方法重载与新建(new)不同,使用new关键词新建的方法只是简单的覆盖指定方法,通过对实例对象进行不同类型的强制转换,外部能轻松的调用不同层级对方法的覆盖定义。
    多态:就是多种形态,多态离不开重载(虚方法),没有重载多态就没有意义。比如,圆形、正方形、长方形、椭圆形、三角形、多边形等等都是图形,要把这些图形都画出来,我们需要为这些图形定义一个绘制的方法(比如DRAW),而我们的主程序在调用的时候可能并不关心要绘制的图形究竟是什么样的图形,主程序只关心图形的绘制位置等信息就行了,这个时候,我们就可以使用多态:1——
    定义一个基类(可以是抽象类) 图形,给这个图形定义个虚方法(或抽象方法) 绘制2——
    根据需要定义不同的具体图形类,让这个具体的图形类继承自 步骤1 定义的图形类,重载虚方法(抽象方法) 绘制,在重载后的方法 绘制 中根据这个图形类的特点执行具体的绘制操作3——
    主程序在要绘制一个图形时只要获得一个基类 图形 的派生子类 的具体实例对象,然后调用这个对象的绘制方法就OK了。这样,主程序中(假如是个方法)只要以 图形 为类型传递具体的实例对象,然后执行 绘制 方法的调用就行。否则,就需要分别写不同图形的具体绘制方法调用函数。
      

  2.   

    在我CSDN BLOG中找吧,一共有5,6篇,你问的都有写
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace 委托
    {
        class Program
        {
          public   delegate int  function(int a,int b );
            static void Main(string[] args)
            {
              function fn = new function(add);
             
               System.Console.WriteLine(fn(3, 6)) ;          
                Console .WriteLine (print (jian,3,4));       
                Console.ReadLine();
            }
            public static int print(function fn, int a, int b)
            {          
                return fn(a,b);
            }
            public static int jian(int a, int b)
            {           
                return a - b;
            }
            public static int  add(int a,int b)
            {         
                return a+b;
            }
        }
    }
    virtual 虚方法(基类中的方法声明为虚方法)
     override 覆盖(子类可重写基类的虚方法);
      

  4.   

    学C的时候指针就很晕糊,然后去学JAVA了,结果现在的工作做c#还是要搞指针,唉~~~
      

  5.   

    委托的例子
    http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html