4 Stimmen

c# Ganzzahl zur Liste hinzufügen

Wenn ich prüfe, ob ein Textfeld gleich 1 ist, möchte ich prüfen, ob die Liste bereits einen bestimmten Wert enthält. Wenn ich das ausführe, geht es immer zum else-Code. Was mache ich falsch?

List<int> list = new List<int>();

if (Convert.ToInt32(DobbelWaarde.Text) == 1)
{
    if (list.Contains(1))
    {
        Console.WriteLine("1 is allready been chosen");
    }
    else
    {
        list.Add(1);
        Console.WriteLine();
        foreach (int li in list)
        {
            Console.WriteLine(li);
            Console.WriteLine("We add 1");
        }
    }
}

12voto

maximpa Punkte 1928

Die erste Zeile initialisiert eine leere Liste:

List<int> list = new List<int>();

Die Liste ist leer, also Enthält() gibt false zurück, unabhängig von dem Wert, auf den Sie prüfen.

Um die Liste zu initialisieren, könnten Sie verwenden:

List<int> list = new List<int> { 1 };

Weitere Einzelheiten finden Sie hier: Objekt- und Sammlungsinitialisierer (C# Programmierhandbuch)

4voto

Habib Punkte 211435

Wenn ich dies ausführe, wird immer der else-Code angezeigt.

Sie fügen in Ihrer Liste nirgends eine ganze Zahl ein. Sie beginnen mit eine leere Liste und prüft dann, ob sie Folgendes enthält 1 Deshalb geht es in den anderen Teil.

Sie können die Liste wie folgt initialisieren:

List<int> list = new List<int>() {1};

2voto

Đức Bùi Punkte 517

Ich verstehe deinen Code nicht!

Die erste Liste hat kein Element

Ihr Code könnte folgendermaßen aussehen:

 List<int> list = new List<int>();
    list.Add(1);
    list.Add(2);
    list.Add(3);
    list.Add(4);

 int number = Convert.ToInt32(DobbelWaarde.Text);

        if ( number == 1)
        {
            if (list.Contains(1))
            {
                Console.WriteLine(number + " is allready been chosen");
            }
            else
            {
                list.Add(number );
                Console.WriteLine();
                foreach (int li in list)
                {
                    Console.WriteLine(li);
                    Console.WriteLine("We add " + number);
                }
            }
        }

1voto

Tim Schmelter Punkte 427304

Sie initialisieren die Liste immer, bevor Sie prüfen, ob sie diese Zahl enthält. Dadurch wird die Liste gelöscht. Deshalb sollten Sie die Initialisierung zum Beispiel in den Konstruktor Ihrer Klasse verschieben:

class MyClass
{
    List<int> list;
    public MyClass()
    {
        list  = new List<int>();
    }

    private void Validate()
    {
        if (Convert.ToInt32(DobbelWaarde.Text) == 1)
        {
            if (list.Contains(1))
            {
                Console.WriteLine("1 is allready been chosen");
            }
            else
            {
                list.Add(1);
                // ...
    }
}

0voto

kiran Punkte 931

Die Bedingung in der if-Anweisung wird immer als false ausgewertet, d.h. die Liste enthält keine 1, so dass sie false zurückgibt und der else-Teil ausgeführt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X