C#的base关键字的用法
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
以下是 base 关键字的一些常见用法: 1. 访问基类的字段和属性 当派生类与基类有同名的字段或属性时,可以使用 base 关键字来明确指定访问基类中的成员。 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. 调用基类的构造函数在派生类的构造函数中,可以使用 base 关键字来调用基类的构造函数。这对于确保基类得到正确的初始化非常有用。 public class BaseClass { public BaseClass(int value) { // 基类的初始化代码 } }
public class DerivedClass : BaseClass { public DerivedClass(int value) : base(value) { // 派生类的初始化代码 } } 在这个例子中,DerivedClass 的构造函数通过 base(value) 调用了 BaseClass 的构造函数。 3. 调用基类的方法如果派生类重写了基类的方法(使用 override 关键字),并且你需要在派生类的方法内部调用基类版本的该方法,可以使用 base 关键字。 public class BaseClass { public virtual void DoSomething() { Console.WriteLine("Doing something in BaseClass."); } }
public class DerivedClass : BaseClass { public override void DoSomething() { base.DoSomething(); // 调用基类版本的 DoSomething 方法 Console.WriteLine("Doing something additional in DerivedClass."); } } 假设基类定义了一个事件,派生类可能想要触发这个事件,或者在自己的事件处理逻辑中调用基类的事件处理器。这可以通过使用base关键字和事件名称来完成。 public class BaseClass { // 基类定义了一个事件 public event Action MyEvent; protected virtual void OnMyEvent() { MyEvent?.Invoke(); } }
public class DerivedClass : BaseClass { // 派生类可以触发基类的事件 public void TriggerBaseEvent() { base.OnMyEvent(); // 调用基类的事件触发方法 } }
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. } } 索引器允许对象像数组一样进行索引。如果基类定义了一个索引器,派生类可以通过base关键字来访问它。 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关键字访问基类的索引器 } }
class Program { static void Main() { DerivedClass derived = new DerivedClass(); derived.AccessBaseIndexer(0, 42); // 设置基类的索引器值 Console.WriteLine(derived[0]); // 输出:42 } } 在这个例子中,BaseClass定义了一个索引器,允许通过整数索引来访问和设置私有数组_values中的值。DerivedClass通过base[index]来访问和设置基类索引器的值。 注意事项1.base 关键字只能在派生类中使用。2.base 关键字用于访问从基类继承的成员,而不是派生类自己新增的成员。3.如果派生类没有重写基类的方法或属性,那么直接访问该方法或属性就会调用基类的版本,无需使用 base 关键字。4.在构造函数中,base 关键字用于调用基类的构造函数,并且必须位于构造函数体的最顶部,即在任何字段赋值或执行其他操作之前。该文章在 2024/3/28 18:12:23 编辑过 |
关键字查询
相关文章
正在查询... |