我需要调用所有先前的函数,而不是被DerivedClass函数覆盖。
public class Program
{
class BaseClass
{
public int BaseClassData = 123;
public virtual void ResetAllData()
{
BaseClassData = 0;
}
}
class DerivedClass : BaseClass
{
public int ChildClassData = 456;
public override void ResetAllData()
{
ChildClassData = 0;
}
}
public static void Main()
{
DerivedClass subject = new DerivedClass();
DerivedClass subject2 = new DerivedClass();
(subject).ResetAllData();
Console.WriteLine(subject.BaseClassData+", "+subject.ChildClassData); // this needs to return 0, 0
(subject2 as BaseClass).ResetAllData();
Console.WriteLine(subject2.BaseClassData+", "+subject2.ChildClassData); // and this needs to return 0, 0
}
}
使用虚拟和重写似乎是正确的方向,因为调用该函数将返回相同的结果,而不管是否转换为subject2中的基类(这是我需要的另一件事),但是都不会调用其自身的先前版本。
是否有一种有效的方法可以将所有内容从BaseClass函数复制到重写函数中?
答案 0 :(得分:3)
您可以使用关键字base
访问基类的成员。因此,在您孩子的替代方法中,只需调用base.ResetAllData()
。