Liste.Enthält, schlägt fehl, Objekt-Vergleich

Habe ich eine Klasse "Class1", hat eine string-variable "sText" in .NET 2.0. Ich erstellte eine Liste von Objekten der Klasse "lstClass1". Es speichert viele Objekte dieser Klasse nach dem setzen der string-variable.

Vollständige code ist:

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 = "";
}

Nun, das problem ist, dass ich möchte nur hinzufügen, die Objekte der Klasse, die hat Zeichenfolge mit einzigartigen text-Wert. Zum Beispiel, wenn lstClass1 bereits ein Objekt mit string-variable mit dem Wert "text1", dann sollte es nicht erlauben das hinzufügen eines Objekts, auch "text1". Also, ich schrieb code:

if (!lstClass1.Contains(new Class1("text1")))
    lstClass1.Add(new Class1("text1"));

Aber es erlaubt immer den text "text1" Hinzugefügt werden, selbst wenn es bereits ein Objekt in der Liste mit "text1" string. Meine Vermutung war, dass auf die erste Schaltfläche click-Ereignis "button1_Click", wird das Objekt Hinzugefügt, da die Liste leer ist, sondern auf die Schaltfläche weiter klicken Sie auf die Liste.Enthält Funktion wird überprüft, ob es bereits ein Objekt in der Liste mit string-Variablen "text1" und wenn gefunden, dann wird es nicht Hinzugefügt werden. Aber es immer ermöglichen, das Objekt mit dem text "text1", auch wenn es schon in der Liste vorhanden.

Bitte beachten: ich habe nicht eine einfache Liste von strings oder ein string, denn ich möchte Ihnen mein großes problem der Liste Klassen und Objekte in einer einfachen Weise.

  • Haben Sie eine Umsetzung der Standard-Equals-und GetHashCode-Methoden von Class1?
  • stackoverflow.com/questions/10454519/...
  • Nicht sicher, warum Sie nicht speichern, dass new Class1("text1") in eine neue Class1typisierte Variablen, btw. Es gibt keine Notwendigkeit, um es zu konstruieren zweimal. Nur Konstrukt einmal, überprüfen Sie es auf die variable und speichern Sie es dann aus der variable.
Schreibe einen Kommentar