c# - 如何在 C# 中使用子类属性
问题描述
程序
using System;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
B x = new B();
x.show();
}
}
public class A //base class
{
protected int no = 1;
public void show()
{
Console.WriteLine(no);
}
}
public class B : A //sub class
{
protected int no = 100;
}
}
输出 1
如何使用子类属性值而不是基类属性值?
我尝试了覆盖,新关键字,但它似乎不起作用。
我对这个问题的了解是:子类既拥有父类属性,又拥有自己的属性。
但是子类属性被基类属性隐藏,如果是故意的,你可以使用 new 关键字。
谢谢
解决方案
如何在 C# 中使用子类属性
protected int no = 1;
这不是属性,而是字段。
您可以在子类(小提琴)中重新分配该字段的值:
public class B : A //sub class
{
public B()
{
no = 100;
}
}
或者你可以用一个属性替换你的字段,它可以是虚拟的,因此被覆盖(小提琴):
public class A //base class
{
protected virtual int no => 1;
public void show()
{
Console.WriteLine(no);
}
}
public class B : A //sub class
{
protected override int no => 100;
}
推荐阅读
- python - Python中的usecols没有读取我的CSV中的标题
- php - 使用 lumen 运行 cron 时:“插入”命名空间中没有定义任何命令。
- git - git log 的 `--pretty=""` 中的 "" 是什么意思
- javascript - 如何使用 rowsGroup 和 rowGroup 扩展为数据表中的每个组带来汇总(汇总总和)
- jenkins - 从管道创建 Jenkins 管道构建
- wpf - 如何从填充属性中的矩形获取颜色?
- c++ - 如何在单元测试中测试升压记录器输出?
- javascript - 如何检查多边形是否包含 Point Sequelize 和 postgres
- html - 未输入特定字段时如何发出警报消息>
- c# - C#中其他类的表单中的访问按钮