我创建了从父类派生的类,如下所示。
class Usability
{
public string useName = "404";
}
和
class Heal : Usability
{
public string useName = "drink";
}
在字典中放入多个时
public Dictionary<int, Usability> useDict = new();
然后通过访问useName
foreach(var usability in item.usabilitys)
{
Console.Write(usability.useName);
}
allways打印";404";。使用时
foreach(Heal usability in item.usabilitys)
{
Console.Write(usability.useName);
}
而是打印";"饮料";。子类中包含了一些函数和更多的数据,但这尽可能地解决了问题。
useName
是字段,不能继承字段。
您可以使用属性而不是字段:
public class Base
{
public virtual string Name { get; } = "404";
}
public class Inheritor : Base
{
public override string Name { get; } = "drink";
}
必须将基属性标记为虚拟才能在类Inheritor
中覆盖它。
属性只是getter和setter方法的语法糖,因此属性Name
实际上被编译为方法get_Name
。
当您将属性标记为虚拟时,您实际上使虚拟方法get_Name
,并且您可以覆盖它。