LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#的base关键字的用法

admin
2024年3月28日 11:52 本文热度 15
在C#中,base 关键字主要用于在派生类中访问被继承的基类成员。这包括基类的字段、属性、方法、事件和索引器。使用 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.");

      }

  }


4.调用基类的事件

假设基类定义了一个事件,派生类可能想要触发这个事件,或者在自己的事件处理逻辑中调用基类的事件处理器。这可以通过使用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.

      }

  }

在这个例子中,BaseClass定义了一个名为MyEvent的事件和一个受保护的虚拟方法OnMyEvent来触发这个事件。DerivedClass通过调用base.OnMyEvent()来触发基类的事件。

5.调用基类的索引器

索引器允许对象像数组一样进行索引。如果基类定义了一个索引器,派生类可以通过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 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved