Постоянное значение false у list.Contains - C#
Формулировка задачи:
Здравствуйте, помогите пожалуйста разобраться из за чего постоянно значение false у строчки "da.Contains(new data { FIO = comboBox1.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() })". Это значение постоянно даже если в list da есть точно такая же запись.
public class data
{
public string FIO { get; set; }
public string klass { get; set; }
public string data1 { get; set; }
public override string ToString()
{
return "ФИО: " + FIO + " Специализация: " + klass+" Дата ухода в отпуск: "+data1;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (da.Contains(new data { FIO = comboBox1.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() })==true)
MessageBox.Show("Не может уйти в отпуск т.к. человек с такой же специализацией уходит в эту же дату");
else
da.Add(new data { FIO = comboBox1.SelectedValue.ToString(), klass = comboBox2.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() });
} Решение задачи: «Постоянное значение false у list.Contains»
textual
Листинг программы
public class data
{
public string FIO { get; set; }
public string klass { get; set; }
public string data1 { get; set; }
public override string ToString()
{
return "ФИО: " + FIO + " Специализация: " + klass+" Дата ухода в отпуск: "+data1;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj))
{
return false;
}
if (ReferenceEquals(this, obj))
{
return true;
}
return obj.GetType() == GetType() && Equals((data)obj);
}
public bool Equals(data other)
{
return string.Equals(klass, other.klass) && string.Equals(data1, other.data1);
}
public override int GetHashCode()
{
unchecked
{
return ((klass?.GetHashCode() ?? 0) * 397) ^ (data1?.GetHashCode() ?? 0);
}
}
}