为什么 "在抽象方法声明中使用 static 或 virtual 修饰符是错误的。" 

解决方案 »

  1.   

    这么说吧,如果是抽象方法,可以使用 static 或 virtual 会有什么后果?abstract class (没有任何类继承或实现此类) 能否直接被实例化吗?比如:存在 abstract class A
    能使用  A = new A(); 吗
    static 是在类型初始化时执行的,不能实例化,就无法完成 static 的初始化;
    virtual 也是一样的道理,是某个方法的默认实现,连类都无法首次完成示例,何来创建呢?
      

  2.   

    static静态方法的调用是不需要实例对象的...
    如果抽象类允许静态方法存在,那么若该抽象类未被实现,调用的抽象静态方法根本不存在,这时怎么调用.C#是单继承的...可以理解为abstract是virtual的超集...因为virtual必须被子类实现,而abstract子类可以选择实现也可以不实现(不实现则继续为抽象类)...因此有了abstract就没必要virtual了