Постоянное значение false у list.Contains - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста разобраться из за чего постоянно значение false у строчки "da.Contains(new data { FIO = comboBox1.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() })". Это значение постоянно даже если в list da есть точно такая же запись.
Листинг программы
  1. public class data
  2. {
  3. public string FIO { get; set; }
  4. public string klass { get; set; }
  5. public string data1 { get; set; }
  6. public override string ToString()
  7. {
  8. return "ФИО: " + FIO + " Специализация: " + klass+" Дата ухода в отпуск: "+data1;
  9. }
  10. }
  11. private void button3_Click(object sender, EventArgs e)
  12. {
  13. if (da.Contains(new data { FIO = comboBox1.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() })==true)
  14. MessageBox.Show("Не может уйти в отпуск т.к. человек с такой же специализацией уходит в эту же дату");
  15. else
  16. da.Add(new data { FIO = comboBox1.SelectedValue.ToString(), klass = comboBox2.SelectedValue.ToString(), data1 = dateTimePicker1.Value.ToString() });
  17. }

Решение задачи: «Постоянное значение false у list.Contains»

textual
Листинг программы
  1. public class data
  2. {
  3.     public string FIO { get; set; }
  4.     public string klass { get; set; }
  5.     public string data1 { get; set; }
  6.     public override string ToString()
  7.     {
  8.         return "ФИО: " + FIO + " Специализация: " + klass+" Дата ухода в отпуск: "+data1;
  9.     }
  10.  
  11.     public override bool Equals(object obj)
  12.     {
  13.         if (ReferenceEquals(null, obj))
  14.         {
  15.             return false;
  16.         }
  17.         if (ReferenceEquals(this, obj))
  18.         {
  19.             return true;
  20.         }
  21.         return obj.GetType() == GetType() && Equals((data)obj);
  22.     }
  23.  
  24.     public bool Equals(data other)
  25.     {
  26.         return string.Equals(klass, other.klass) && string.Equals(data1, other.data1);
  27.     }
  28.  
  29.     public override int GetHashCode()
  30.     {
  31.         unchecked
  32.         {
  33.             return ((klass?.GetHashCode() ?? 0) * 397) ^ (data1?.GetHashCode() ?? 0);
  34.         }
  35.     }
  36. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут