理解方法簽章中的「new」關鍵字
在程式碼重構過程中,開發人員錯誤地在方法簽章中引入了new 關鍵字:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
這可以在C# 中有效編譯,引發關於以下含義的疑問方法簽名中的new 關鍵字。
「new」關鍵字表示什麼?
如MSDN 文件中提到的,方法簽名中的new 關鍵字修改其引用行為:
範例:
考慮以下程式碼:
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中文網其他相關文章!