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

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

Jan 02, 2025 pm 06:54 PM

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

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

c語言函數格式字母大小寫轉換步驟 c語言函數格式字母大小寫轉換步驟 Mar 03, 2025 pm 05:53 PM

c語言函數格式字母大小寫轉換步驟

Gulc:從頭開始建造的C庫 Gulc:從頭開始建造的C庫 Mar 03, 2025 pm 05:46 PM

Gulc:從頭開始建造的C庫

c語言函數返回值的類型有哪些?返回值是由什麼決定的? c語言函數返回值的類型有哪些?返回值是由什麼決定的? Mar 03, 2025 pm 05:52 PM

c語言函數返回值的類型有哪些?返回值是由什麼決定的?

c語言函數的定義和調用規則是什麼 c語言函數的定義和調用規則是什麼 Mar 03, 2025 pm 05:53 PM

c語言函數的定義和調用規則是什麼

C標準模板庫(STL)如何工作? C標準模板庫(STL)如何工作? Mar 12, 2025 pm 04:50 PM

C標準模板庫(STL)如何工作?

c語言函數返回值在內存保存在哪裡? c語言函數返回值在內存保存在哪裡? Mar 03, 2025 pm 05:51 PM

c語言函數返回值在內存保存在哪裡?

distinct用法和短語分享 distinct用法和短語分享 Mar 03, 2025 pm 05:51 PM

distinct用法和短語分享

c語言函數最大公約數最小公倍數是什麼 c語言函數最大公約數最小公倍數是什麼 Mar 03, 2025 pm 05:55 PM

c語言函數最大公約數最小公倍數是什麼

See all articles