gpt4 book ai didi

c# - 为什么我的沮丧在 C# 中失败?

转载 作者:行者123 更新时间:2023-11-30 21:01:03 24 4
gpt4 key购买 nike

我有三种类型:

  1. 患者
  2. 住院病人:病人
  3. 门诊:病人

我有一个方法可以填充基本患者及其所有属性:PatientRepository.FillPatient() 并返回一个Patient 对象。

然后我需要检查并查看 Patient 类型是什么,然后向下转换为 OutpatientInpatient

当我尝试向下转换时,它抛出 Unable to cast object of type 'Patient' to type 'Inpatient'。这是一个运行时错误。

if (patient.Type == PatientType.Inpatient)
{
var inpatient = (Inpatient)patient;
return inpatient;
}

public enum PatientType
{
Inpatient, Outpatient
}

我不知道为什么。我在这里做错了什么吗?

最佳答案

您的FillPatient 应该以正确的方式返回特定的类:

public static Patient FillPatient()
{
if (something) {
return new InPatient();
}
else {
return new OutPatient();
}
}

然后你可以将它向下转换为特定的类

Patient patient = PaitentRepository.FillPatient();

if (patient is InPatient) {
...
}
else {
...
}

注意:大多数情况下,当一个类是 N 个其他类的基类时,该基类(Patient 在您的情况下)将是抽象的。

关于c# - 为什么我的沮丧在 C# 中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486759/

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