溫馨提示×

C#中override和new關(guān)鍵詞的區(qū)別

小樊
91
2024-07-22 18:46:04
欄目: 編程語言

在C#中,overridenew關(guān)鍵詞都用于實現(xiàn)方法的重寫(覆蓋),但它們之間有一些重要的區(qū)別:

  1. override關(guān)鍵詞用于重寫基類中的虛方法,子類中的重寫方法必須和基類中的虛方法具有相同的簽名(包括返回類型、參數(shù)列表等),并且必須使用override關(guān)鍵詞標記。這樣做可以確保子類中的方法覆蓋了基類中的虛方法。
class A
{
    public virtual void Method()
    {
        Console.WriteLine("A");
    }
}

class B : A
{
    public override void Method()
    {
        Console.WriteLine("B");
    }
}
  1. new關(guān)鍵詞用于隱藏基類中的方法,子類中的隱藏方法不需要和基類中的方法具有相同的簽名,但必須使用new關(guān)鍵詞標記。這樣做可以在子類中創(chuàng)建一個新的方法,而不是覆蓋基類中的方法。
class A
{
    public void Method()
    {
        Console.WriteLine("A");
    }
}

class B : A
{
    public new void Method()
    {
        Console.WriteLine("B");
    }
}

總的來說,override關(guān)鍵詞用于重寫基類中的虛方法,new關(guān)鍵詞用于隱藏基類中的方法。通常情況下,建議優(yōu)先使用override關(guān)鍵詞,因為它遵循面向?qū)ο缶幊痰脑瓌t,可以確保代碼的可維護性和可擴展性。

0