http://www.cnblogs.com/oneword/archive/2010/03/09/1681224.html此博文我在下面发表了两个疑问,有高手指点一下。

解决方案 »

  1.   

    结果是一样,但最后为什么说基类A也要同时加NEW呢?B类加了NEW不就可以了吗?
      

  2.   


    一个是方法的修饰new,表示这是一个独立的方法(和基类方法没有继承关系)
    一个是new运算符,用于初始化一个引用变量。new B();产生一个B的实例
    new C();产生一个C的实例当然不一样。
      

  3.   

    public class A
    {
        public virtual void Show()
        {
            HttpContext.Current.Response.Write("A Show<br/>");
        }    public virtual void Shows()
        {
            HttpContext.Current.Response.Write("A Shows<br/>");
        }
    }
    public class B:A
    {
        public void Shows()
        {
            HttpContext.Current.Response.Write("B Shows<br/>");
        }
        
    }public class C : B
    {
       
    } 结论:
    override可以确保所有继承了B类的派生类都使用B中定义的派生类版本.
    若想使用类A中的方法,则需使B中和A中签名的方法前都加上new关键字.别人说的不是引用类的实例,说的都是签名的方法!!!
      

  4.   

    基础的东西,没好好学吧。好好看看virtual override new 的关系。
      

  5.   

    virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。
    http://msdn.microsoft.com/ZH-CN/library/vstudio/6fawty39(v=vs.110).aspx
    http://msdn.microsoft.com/ZH-CN/library/vstudio/ms173153(v=vs.110).aspx
      

  6.   

    你觉得基类A中的方法也要加NEW吗,我觉得只有派生类中方法才会要加NEW,基类中加NEW有意义吗,上面博文最后一句话说的就是这个意思。针对博文说话,不要乱扯其他。