首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# new 關鍵字進階用法:隱藏基類成員(二)

     編輯:關於C語言

隱藏基類方法

在衍生類以 new 宣告同名成員,隱藏基類實作:


public class MyBaseC { public void Invoke() { } }
public class MyDerivedC : MyBaseC { new public void Invoke() { } }

隱藏規則總結

  1. 常數、欄位、屬性、類型 → 隱藏同名基類所有成員。
  2. 方法 → 隱藏同名基類屬性、欄位、類型,及相同簽章的所有方法。
  3. 3. 索引子 → 隱藏同名基類索引子。 4. new 與 override 不能同時使用。 5. 未實際隱藏任何成員卻使用 new 會產生編譯警告。

巢狀類型隱藏範例


public class MyBaseC
{
    public class MyClass { public int x = 200; public int y; }
}

public class MyDerivedC : MyBaseC
{
    new public class MyClass // 隱藏基類巢狀類型
    {
        public int x = 100; public int y; public int z;
    }

    public static void Main()
    {
        MyClass s1 = new MyClass();           // 衍生類版本 x=100
        MyBaseC.MyClass s2 = new MyBaseC.MyClass(); // 基類版本 x=200
        Console.WriteLine(s1.x); // 100
        Console.WriteLine(s2.x); // 200
    }
}

完整輸出

100
200

最佳實務

  • 刻意隱藏時請加上 new 消除警告並明確語意。
  • 若需多型行為,請使用 virtual/override 而非 new。
  • 巢狀類型隱藏較少見,需以完整名稱 Base.Nested 存取被隱藏版本。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved