gpt4 book ai didi

c# - 使用多态和 List 时访问子类成员

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:53 26 4
gpt4 key购买 nike

我有 3 个类:"ChemDataChemicals(Super)"、"ChemDataAlcohol(Sub)、"ChemDataAcidBase"(Sub) 和一个包含所有对象的通用列表(类型:ChemDataChemicals)。我的父类(super class)包含我的大部分字段,但子类都包含一个额外的字段 - pH(十进制)和 VolPercentage(十进制)。

下面的代码应该在 ListBox 中添加 item.Name 和 item.VolPercentage/item.pH,但我无法访问我的子类中的字段。

 foreach (ChemDataChemicals item in tmpChemDataChemicalsList)
{
if (item is ChemDataAlcohol)
{

listBox1.Items.Add(String.Format("{0}: {1}%", item.Name, (ChemDataAlcohol)item.VolPercentage));
}

else if (item is ChemDataAcidBase)
{
listBox1.Items.Add(String.Format("{0}: {1}M", item.Name, item.pH));
}
}

我尝试了一些转换,但似乎没有任何效果。 (Windows 窗体 - C#)谢谢,

最佳答案

改变

(ChemDataAlcohol)item.VolPercentage

((ChemDataAlcohol)item).VolPercentage

此外,我建议您使用 as 关键字:

(item as ChemDataAlcohol).VolPercentage

因为,对于第一种方法,如果转换失败,则会抛出一个异常。使用 as 方法时,它会产生 null,可以对其进行检查,并避免抛出异常

关于c# - 使用多态和 List 时访问子类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com