我正在尝试创建一个系统,允许您创建一个医院病房,然后将患者的个人详细信息添加到每个病房。 目的是能够从单个text / csv文件中读取所有信息。
我目前有代码来创建患者并添加他们的详细信息,但创建病房并将病人分配到病房是我无法掌握的。 我的讲师建议在Ward课程中使用一系列患者作为财产,但目前还不能理解。 典型的患者将在我的文本文件中写为 '' JoeBloggs,28,03 / 03 / 1989,8'' 以下代码对属性等进行排序。
以下是我目前创建患者的代码:
private void btnLoad_Click(object sender, RoutedEventArgs e)
{
//read files from file
string[] patientList = File.ReadAllLines("MyList.txt");
string[] patientArray = new string[4];
string patientLong, name;
Patient patient;
int age, blood;
DateTime dob;
.
for (int i = 0; i < patientList.Length; i++)
{
patientLong = patientList[i];//one long string with commas eg johnmurphy,22,12/9/1998,6
patientArray = patientLong.Split(',');//split array according to comma
name = patientArray[0];
age = Convert.ToInt32(patientArray[1]);
dob = DateTime.Parse(patientArray[2]);
blood = Convert.ToInt32(patientArray[3]);
patient = new Patient(name,age,dob,blood);
bookList.Add(patient);
}
// lbxExpenses.ItemsSource = null;
lstPatients.ItemsSource = patientList;
}
上课病房
class Ward
{
public string Name { get; set; }
public Patient [] Patient { get; set; }//array of patients as a property?
public Ward(string name,int patient )
{
Name = name;
Patient = new int[i];//currently giving error
}
public string GetWardDetails()
{
return string.Format("{0}", Name);
}
}
答案 0 :(得分:2)
解决方案不是使用数组,而是使用通用列表。
class Ward
{
public string Name { get; set; }
public List<Patient> Patients { get; set; }//array of patients as a property?
public Ward(string name)
{
Name = name;
Patients = new List<Patient>();
}
public string GetWardDetails()
{
return string.Format("{0}", Name);
}
}
现在,当您想要从病房中添加或移除患者时,您可以这样做:
Ward ward = new Ward("Emergency");
ward.Patients.Add(/*a valid patient object*/);
如果你想删除
ward.Patients.Remove(/*An already-existing patient object in the ward*/);
Some more about Lists可以在这里找到。问题是数组不会调整大小,而列表会调整大小。因此,当您阅读文件时,您可以随时将新病人添加到病房。此外,当您实例化新对象时,您希望将该对象实例化为其类型。当你执行= new int[0]
时,你告诉它将类型Patient分配为int,当它没有其中的字段/属性时可能是int类型。这并不是说你永远不会将一种类型分配给另一种类型,但是如果你想要实现polymorphism,你通常只会这样做。
如果您希望继续使用数组,则必须按照以下方式执行操作:
class Ward
{
public string Name { get; set; }
public Patient[] Patients { get; private set; }
public Ward(string name, IEnumerable<Patient> Patients)
{
Name = name;
this.Patients = Patients.ToArray();
}
public Ward(string name, Patient[] Patients)
{
Name = name;
Patients = Patients;
}
public string GetWardDetails()
{
return string.Format("{0}", Name);
}
}
干杯队友:)