这是我遇到问题的代码部分;
List<People> people = new List<People>();
这被填充了 3 种不同类型的对象,它们都派生自 People 类;
people.Add(new Student(constructorarguments);
people.Add(new AcademicStaff(constructorarguments);
people.Add(new AdministrativeStaff(constructorarguments);
这是给我带来问题的代码;
private void studentCheckbox_CheckedChanged(object sender, EventArgs e)
{
if (studentCheckbox.CheckState == CheckState.Checked)
{
foreach (Student student in people)
{
if (student.Compare(SearchTextBox.Text) == 0)
{
resultsListBox.Items.Add(student.Forename);
}
}
}
else
{}
}
正如您从 CheckState 代码中看到的那样,它使用的是 Windows 窗体。但我遇到的问题是它并没有限制与学生的比较。它试图继续过去的学生,并试图将 AcademicStaff 投射为学生,这是我的程序的错误所在。在过去的几个小时里,我一直在为此苦苦挣扎,没有任何回旋余地,任何帮助将不胜感激!
我不认为问题出在表格或课程本身,但我不知道为什么当我将其限制为 Student 类型时,它为什么要尝试转移到 AcademicStaff