一、
MyDelegate d=new MyDelegate(p.InstanceMethod)不能改为MyDelegate d=new MyDelegate(MyClass.InstanceMethod)
因为InstanceMethod不是静态成员,所以只能先实例化该类,然后实例使用此方法。不能通过类名直接使用类的非静态成员。二、
d=new MyDelegate(MyClass.StaticMethod)也不能写成d=new MyDelegate(p.StaticMethod).
应该是可以的,但必须先生成实例p!

解决方案 »

  1.   

    大概这就是静态和非静态的差别吧
    第二行定义delegate时,没有说明MyDelegate的参数,而下面的调用又有了参数,能通过编译吗?好像
      

  2.   

    就是静态与非静态的差别:
    静态方法(或静态成员变量)只属于该类,不属于该类的实例,应此
    d=new MyDelegate(MyClass.StaticMethod);只能用MyClass.StaticMethod;
    同样,非静态方法(或非静态成员变量),当该类生成一个实例时非静态方法(或非静态成员变量)只属于该实例,而不属于类MyClass。