我希望实现的目标如下:每次添加student
时,如果内部存在重复条目,则应检查ListBox
。如果是这种情况,则应显示MessageBox
并阻止将该项添加到ListBox
。
这是我目前的代码:
private void buttonAdd_Click(object sender, EventArgs e)
{
Student student = GetStudent();
Repository.AddStudent(student);
if (listBoxStudents.Items.Contains(student))
{
MessageBox.Show("This student already exists!");
}
else
{
listBoxStudents.Items.Add(student);
ClearandFocus();
}
}
我想知道为什么我的代码无法正常工作,输入来自多个TextBoxes
,表单会添加到List<Students>
和ListBox
。
答案 0 :(得分:4)
这可能是因为您没有正确覆盖Equals
课程中的Student
方法。如果不根据类数据覆盖Equals
,则会运行Equals
类中的默认object
方法,并且只是比较对象引用。因此,您要比较两个相同但不同的对象,这会导致false
的值object.Equals
,这会导致Contains
方法返回false
。