У меня есть класс «Class1», который имеет строковую переменную «sText» в .NET 2.0. Я создал список объектов этого класса «lstClass1». Он сохраняет много объектов этого класса после установки его строковой переменной.List.Contains сбой при сравнении объектов
Полный код:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (!lstClass1.Contains(new Class1("text1")))
lstClass1.Add(new Class1("text1"));
}
public List<Class1> lstClass1 = new List<Class1>();
}
public class Class1
{
public Class1(string sText)
{
this.sText = sText;
}
public string sText = "";
}
Теперь проблема в том, что я только хочу, чтобы добавить объекты класса, который имеет строку с уникальным текстовым значением. Например, если lstClass1 уже имеет объект со значением переменной строки «text1», то он не должен допускать добавления объекта, который также имеет «text1». Итак, я написал код:
if (!lstClass1.Contains(new Class1("text1")))
lstClass1.Add(new Class1("text1"));
Но это позволяет всегда текст «text1» должны быть добавлены, даже если уже есть объект в списке с «TEXT1» строка. Мое предположение состояло в том, что при первом нажатии кнопки «button1_Click» объект будет добавлен, потому что список пуст, но при следующей кнопке нажмите «Функция List.Contains», чтобы проверить, есть ли уже объект в списке со строковой переменной «text1» и если он будет найден, он не будет добавлен. Но он всегда позволяет добавлять объект с текстом «text1», даже если он уже присутствует в списке.
Обратите внимание: я не взял простой список строк или строки, потому что я хочу объяснить мою большую проблему списка, классов и объектов простым способом.
Пожалуйста, помогите.
Вы предоставили реализацию методов Equals и GetHashCode по умолчанию для Class1? – Oscar
http://stackoverflow.com/questions/10454519/best-way-to-compare-two-complex-object – k06a
Не знаете, почему вы не храните этот 'новый Class1 (« text1 »)' в новый класс Class1 '-typed variable, кстати. Нет необходимости строить его дважды. Просто постройте один раз, проверьте его на переменной, а затем сохраните его из переменной. – Nyerguds