閱讀802 返回首頁    go 技術社區[雲棲]


new 和 override 的區別

class A
  {
    public virtual void Test()
    {
      Console.WriteLine("A");
    }
  }
 
  class A1 : A
  {
    public override void Test()
    {
      Console.WriteLine("A1");
    }
  }
 
  class A2 : A
  {
    public new void Test()
    {
      Console.WriteLine("A2");
    }
  }
 
  class Test
  {
    static void Main(string[] args)
    {
      A a1 = new A1();
      A a2 = new A2();
 
      a1.Test();
      a2.Test();
      (a2 as A2).Test();
 
      Console.Read();
    }
  }
輸出結果是:

A1...
A...
A2...

是不是和想的不一樣,總之理解new和override對多態的影響很重要。  

最後更新:2017-04-02 00:06:28

  上一篇:go C# 2.0 - 泛型(Generics)
  下一篇:go [.NET 基於角色安全性驗證] 之五:跨應用程序進行 Forms 身份驗證