C# 方法簽章中的「new」關鍵字有什麼作用?
Jan 02, 2025 pm 06:54 PM理解方法簽章中的「new」關鍵字
在程式碼重構過程中,開發人員錯誤地在方法簽章中引入了new 關鍵字:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
登入後複製
這可以在C# 中有效編譯,引發關於以下含義的疑問方法簽名中的new 關鍵字。
「new」關鍵字表示什麼?
如MSDN 文件中提到的,方法簽名中的new 關鍵字修改其引用行為:
- 隱藏繼承的方法:在在衍生類別中使用時類別中,new 關鍵字可防止方法的繼承實作被重複使用。相反,派生類別中的方法被視為全新的方法。
- 重寫非虛方法與靜態方法:與 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

熱門文章
兩個點博物館:邦格荒地地點指南
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
兩個點博物館:邦格荒地地點指南
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)