C#函数覆盖

时间:2017-04-08 11:37:55

标签: c# oop method-overriding

我正在学习C#继承。在覆盖函数时,我见过程序员使用base.method()语句。例如: -

protected override void OnClear()
            {
                _currentPos = 0;
                _albumFilename = null;
                this.Dispose();                                 
                base.OnClear();     // Why this Statement is used?
            }

任何人都可以在这里解释一下base.OnClear()陈述的用法吗?我将很高兴并感谢你!请分享你的知识: - )

2 个答案:

答案 0 :(得分:3)

要调用父类的OnClear()方法,已使用此代码base.OnClear()方法。

由于您要从父类重写该方法,因此如果要调用父类的方法,则应使用base关键字来访问父类成员。

来自MSDN's documentation on base:

  

base关键字用于访问基类的成员   在派生类中:

     
      
  1. 在已被另一个方法覆盖的基类上调用方法。   ...
  2.   

答案 1 :(得分:2)

这很简单,因为被覆盖的方法具有您需要的一些功能,它知道如何清除原始类中的数据并且可以访问其私有部分。你作为继承人没有。因此,您需要调用原始实现来清除基类中的数据,并且被覆盖的代码部分处理您的数据。