首頁 > 後端開發 > C++ > 虛擬/覆蓋與c#中的新事物:我什麼時候應該使用哪個關鍵字進行方法覆蓋?

虛擬/覆蓋與c#中的新事物:我什麼時候應該使用哪個關鍵字進行方法覆蓋?

Linda Hamilton
發布: 2025-01-27 06:36:09
原創
432 人瀏覽過

Virtual/Override vs. New in C#: When Should I Use Which Keyword for Method Overriding?

C# 中的 virtual/override 與 new 關鍵字:何時使用哪個關鍵字進行方法重寫?

在基底類別中定義方法時,程式設計師常常面臨是否使用「virtual」或「new」關鍵字的難題。這個決定會顯著影響衍生類別中方法重寫的行為。

Virtual Override

在基底類別方法中使用「virtual」關鍵字表示它可以在衍生類別中被重寫。要重寫該方法,派生類別必須使用“override”關鍵字。這確保了重寫的方法能如預期運作,維護繼承層次結構和多態性。

當派生類別呼叫重寫的方法時,它將執行重寫版本,即使持有物件的參考變數是基底類別類型。這稱為後期綁定,並允許動態行為。

New 關鍵字

相反,衍生類別方法中的「new」關鍵字聲明一個新方法,該方法隱藏具有相同名稱的繼承方法。使用時,新方法在衍生類別中取代繼承方法,從而破壞多態性。

當派生類別呼叫用「new」宣告的方法時,它將執行該新方法,而不管持有物件的引用變數的類型如何。這被認為是早期綁定,並阻礙多態性。

範例

考慮以下程式碼範例:

<code class="language-csharp">public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}</code>
登入後複製

如果您將 Derived 的實例指派給 Base 類型的變數並呼叫 DoSomething(),則如果使用 virtual/override,結果將為 false,但如果使用 new,則結果為 true。這突顯了後期綁定和早期綁定之間的差異。

以上是虛擬/覆蓋與c#中的新事物:我什麼時候應該使用哪個關鍵字進行方法覆蓋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板