首頁 > 後端開發 > C++ > C#中的覆蓋與陰影:您什麼時候應該使用每種技術?

C#中的覆蓋與陰影:您什麼時候應該使用每種技術?

Linda Hamilton
發布: 2025-01-28 13:56:09
原創
894 人瀏覽過

Overriding vs. Shadowing in C#: When Should You Use Each Technique?

C#中的方法重寫與隱藏

在繼承方面,C# 提供了兩種不同的技術來重新定義基類中的方法:重寫和隱藏。這兩種技術在工作方式和對繼承鏈的影響方面存在根本區別。

隱藏

隱藏允許您創建一個與基類中方法同名的新方法,但不使用 override 關鍵字。此方法成為派生類的局部成員,將基類方法隱藏起來。當派生類的實例調用隱藏方法時,它會直接執行該類中的實現,而不管繼承層次結構如何。

示例:

<code class="language-csharp">class A
{
   public int Foo(){ return 5;}
   public virtual int Bar(){return 5;}
}
class B : A
{
   public new int Foo() { return 1;}     //隐藏
   public override int Bar() {return 1;} //重写
}</code>
登入後複製

在此示例中,方法 Foo 在類 B 中被隱藏,而方法 Bar 被重寫。當 clBB 的實例)調用 Foo 時,它返回 1,因為直接執行 B 中的 Foo

重寫

與隱藏相反,重寫需要 override 關鍵字。它允許您在基類中定義虛擬方法的新實現。當派生類的實例調用重寫的方法時,它會按照繼承鏈執行派生類中的實現。

示例:

在前面的示例中,類 B 中的方法 Bar 被重寫。當 clB 調用 Bar 時,它返回 1,因為 B 中的 Bar 是重寫實現。

隱藏與重寫的區別

隱藏和重寫之間的選擇取決於您的具體需求:

  • 隱藏: 當您想要隱藏從基類繼承的方法並改用局部實現時,使用隱藏。
  • 重寫: 當您想要重新定義繼承的方法並執行特定於派生類的實現時,使用重寫。

以上是C#中的覆蓋與陰影:您什麼時候應該使用每種技術?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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