重構程式碼時,出現了一個不尋常的方法簽章:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
問題: 這個方法簽章中的new 關鍵字有何意義?這是C# 3.0引入的功能嗎?它與 override 有什麼不同?
答案:
方法簽名中的 new 關鍵字與 override 有不同的用途。根據 Microsoft 的 MSDN 文檔,它允許隱藏繼承的成員。
說明差異的範例:
public class A { public virtual void One(); public void Two(); } public class B : A { public override void One(); public new 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
在此範例中,在 One 方法上使用 override 來覆寫其在基底類別 A。另一方面,在 Two 方法上使用 new 來隱藏 A 的繼承實作。
Key差異:
override 修改虛擬或抽象方法以在衍生類別中提供不同的實作。相較之下,new 隱藏了繼承的成員,包括虛擬的和非虛擬的,允許在衍生類別中提供新的實作。
以上是C# 方法簽章中的「new」關鍵字代表什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!