c# - 如何从它的 BaseClass 函数中调用所有同名的 DerivedClass 对象函数?
问题描述
我需要调用所有以前的函数,而不是被 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
}
}
使用 virtual 和 override 似乎是正确的方向,因为调用该函数将返回相同的结果,无论转换为它在 subject2 中的基类(这是我需要的另一件事),但两者都不会调用其自身的先前版本。
有没有一种有效的方法可以做到这一点,而无需将 BaseClass 函数中的所有内容复制到覆盖函数中?
解决方案
您可以使用关键字访问基类的成员base
。因此,在您孩子的重写方法中,只需调用base.ResetAllData()
.
推荐阅读
- python - 确定该月给定日期的星期几。给定每月第一天的工作日
- python - __init__() 得到了一个意外的关键字参数“iid”
- python - 如何在 django-ckeditor 中为图像放置图形标签而不是 p 标签
- python - 'LoginForm' 对象没有属性 'get_user'
- julia - 如何在 Flux.jl 中使用 VGG19?
- jquery - 在滚动粘性标题上显示徽标
- django - 使用 Django 生成 Zoom 会议时出错?
- vue.js - Vue3 数据变量/对象未使用选项 API 定义
- python - 检查 os.system 响应中的字符串
- javascript - 如何删除一个