从集合的继承中获取值

  • 本文关键字:获取 继承 集合 c# class
  • 更新时间 :
  • 英文 :


我创建了从父类派生的类,如下所示。

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,并且您可以覆盖它。

最新更新