首頁 >後端開發 >C++ >C# 方法簽章中的「new」關鍵字有什麼作用?

C# 方法簽章中的「new」關鍵字有什麼作用?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-02 18:54:38723瀏覽

What Does the `new` Keyword Do in C# Method Signatures?

理解方法簽章中的「new」關鍵字

在程式碼重構過程中,開發人員錯誤地在方法簽章中引入了new 關鍵字:

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}

這可以在C# 中有效編譯,引發關於以下含義的疑問方法簽名中的new 關鍵字。

「new」關鍵字表示什麼?

如MSDN 文件中提到的,方法簽名中的new 關鍵字修改其引用行為:

  1. 隱藏繼承的方法:在在衍生類別中使用時類別中,new 關鍵字可防止方法的繼承實作被重複使用。相反,派生類別中的方法被視為全新的方法。
  2. 重寫非虛方法與靜態方法:與 override關鍵字只能重寫虛擬方法不同,新方法關鍵字允許重寫基礎中的非虛擬方法甚至靜態方法

範例:

考慮以下程式碼:

public class A
{
   public virtual void One();
   public static void Two();
}

public class B : A
{
   public new void One();
   public override void Two();
}

B b = new B();
A a = b as A;

a.One(); // Calls implementation in B
a.Two(); // Calls implementation in A
b.One(); // Calls implementation in B
b.Two(); // Calls implementation in B

在此範例中,B 類別重新定義了One方法(使用new)和兩種方法(使用override)。透過對 One 使用 new,B 類別隱藏了繼承的實作並引入了自己的實作。然而,透過對 Two 使用 override,它會覆寫繼承的虛擬方法。

因此,new 關鍵字提供了靈活性,允許在覆蓋不適用的情況下覆蓋或隱藏繼承的方法,例如非虛擬和靜態方法。

以上是C# 方法簽章中的「new」關鍵字有什麼作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn