个人理解,delegate是声明委托类的关键字,声明委托和声明一个类差不多, 不过,可以不用为该委托类定义什么方法或属性。
如:delegate void SomeDelegate();
然后为该委托类创建一个实例,创建实例需要一个构造参数,该参数指定所要委托的例程的名称。
如:SomeDelegate OneInstance = new SomeDelegate(OneMethod); void OneMethod()
{       //Do Something}
这样的话在执行这个委托的实例的时候就相当于实行了这个委托实例所指定的所委托的方法!  另外要注意的是,用 delegate声明的委托类的格式要和委托实例所委托的方法的声明格式一样(即返回类型,参数个数和各参数类型要一致)。
如:delegate string B(int i);
实例化B委托类型,并运行委托:B b = new B(A);b(12);//此委托运行后将返回string型的字符串“12”此时所委托的方法A 需要很委托类型B的返回类型以及参数

-------------------------------------------------------------------
public delegate int admin1(int x); //定义一个委托...
public partial class _Default : System.Web.UI.Page
{
    public class admin //定义类。...
    {
        public static int aa(int a,admin1 b) //定义一个静态方法..并读取委托的方法`进行处理..
        { return b(a); } //用委托(也就是用户指定的方法..)处理参数a中的值...
    }
    public int dd(int dd1) //处理中..请梢后...
    {
        return dd1 + 1;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int bb;
        admin1 aa1 = new admin1(dd);//创建一个名为aa1的委托.哎呀`感觉杂这么像指针呢.?
        bb=admin.aa(100,aa1); //把要处理的值和委托传给类中的一个静态方法进行处理.然后那个进台方法在把值传回给委托.然后委托类型把委托方法传给另一个委托.最后在使用另一个委托得到的方法把值给处理掉.然后在传给变量bb.最后在页面显示出结果..劳资头昏了!!!

        Response.Write(Convert.ToString(bb));

    }
}