C#的base關(guān)鍵字的用法
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
以下是 base 關(guān)鍵字的一些常見用法: 1. 訪問基類的字段和屬性 當派生類與基類有同名的字段或?qū)傩詴r,可以使用 base 關(guān)鍵字來明確指定訪問基類中的成員。 public class BaseClass { public int MyProperty { get; set; } } public class DerivedClass : BaseClass { new public int MyProperty { get; set; } // 隱藏基類的 MyProperty public void ShowProperties() { Console.WriteLine("Base MyProperty: " + base.MyProperty); // 訪問基類的 MyProperty Console.WriteLine("Derived MyProperty: " + this.MyProperty); // 訪問派生類的 MyProperty } }在這個例子中,DerivedClass 隱藏了 BaseClass 中的 MyProperty 屬性。通過使用 base.MyProperty,我們可以訪問基類中的 MyProperty 屬性。 2. 調(diào)用基類的構(gòu)造函數(shù)在派生類的構(gòu)造函數(shù)中,可以使用 base 關(guān)鍵字來調(diào)用基類的構(gòu)造函數(shù)。這對于確?;惖玫秸_的初始化非常有用。 public class BaseClass { public BaseClass(int value) { // 基類的初始化代碼 } }
public class DerivedClass : BaseClass { public DerivedClass(int value) : base(value) { // 派生類的初始化代碼 } } 在這個例子中,DerivedClass 的構(gòu)造函數(shù)通過 base(value) 調(diào)用了 BaseClass 的構(gòu)造函數(shù)。 3. 調(diào)用基類的方法如果派生類重寫了基類的方法(使用 override 關(guān)鍵字),并且你需要在派生類的方法內(nèi)部調(diào)用基類版本的該方法,可以使用 base 關(guān)鍵字。 public class BaseClass { public virtual void DoSomething() { Console.WriteLine("Doing something in BaseClass."); } }
public class DerivedClass : BaseClass { public override void DoSomething() { base.DoSomething(); // 調(diào)用基類版本的 DoSomething 方法 Console.WriteLine("Doing something additional in DerivedClass."); } } 假設基類定義了一個事件,派生類可能想要觸發(fā)這個事件,或者在自己的事件處理邏輯中調(diào)用基類的事件處理器。這可以通過使用base關(guān)鍵字和事件名稱來完成。 public class BaseClass { // 基類定義了一個事件 public event Action MyEvent; protected virtual void OnMyEvent() { MyEvent?.Invoke(); } }
public class DerivedClass : BaseClass { // 派生類可以觸發(fā)基類的事件 public void TriggerBaseEvent() { base.OnMyEvent(); // 調(diào)用基類的事件觸發(fā)方法 } }
class Program { static void Main() { DerivedClass derived = new DerivedClass(); derived.MyEvent += () => Console.WriteLine("BaseClass event triggered from DerivedClass."); derived.TriggerBaseEvent(); // 輸出:BaseClass event triggered from DerivedClass. } } 索引器允許對象像數(shù)組一樣進行索引。如果基類定義了一個索引器,派生類可以通過base關(guān)鍵字來訪問它。 public class BaseClass { private int[] _values = new int[10]; // 基類定義了一個索引器 public int this[int index] { get { return _values[index]; } set { _values[index] = value; } } }
public class DerivedClass : BaseClass { // 派生類可以訪問基類的索引器 public void AccessBaseIndexer(int index, int value) { base[index] = value; // 使用base關(guān)鍵字訪問基類的索引器 } }
class Program { static void Main() { DerivedClass derived = new DerivedClass(); derived.AccessBaseIndexer(0, 42); // 設置基類的索引器值 Console.WriteLine(derived[0]); // 輸出:42 } } 在這個例子中,BaseClass定義了一個索引器,允許通過整數(shù)索引來訪問和設置私有數(shù)組_values中的值。DerivedClass通過base[index]來訪問和設置基類索引器的值。 注意事項1.base 關(guān)鍵字只能在派生類中使用。2.base 關(guān)鍵字用于訪問從基類繼承的成員,而不是派生類自己新增的成員。3.如果派生類沒有重寫基類的方法或?qū)傩裕敲粗苯釉L問該方法或?qū)傩跃蜁{(diào)用基類的版本,無需使用 base 關(guān)鍵字。4.在構(gòu)造函數(shù)中,base 關(guān)鍵字用于調(diào)用基類的構(gòu)造函數(shù),并且必須位于構(gòu)造函數(shù)體的最頂部,即在任何字段賦值或執(zhí)行其他操作之前。該文章在 2024/3/28 18:12:23 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |