Problem beim Füllen einer Lit(of String) innerhalb einer Sub

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von KristallBaum.

    Problem beim Füllen einer Lit(of String) innerhalb einer Sub

    Hallo,

    VB.NET-Quellcode

    1. ​Private Shared Sub ListeErweitern()
    2. For Each item In ListeGanzesDeckFor i As Integer = 0 To ListeGanzesDeck.Count - 1
    3. If Not ListeMinus2.Contains(ListeGanzesDeck(i)) Then
    4. ListeVerbessertesDeck.Add(ListeGanzesDeck(i))
    5. End If
    6. Next i
    7. Next
    8. End Sub


    Es sollen alle Elemente der List(of String) ListeGanzesDeck
    die nicht in der List(of String) ListeMinus2 enthalten sind gefunden
    werden und in die List (of String) ListeVerbessertesDeck hinzugefunden werden.

    Jedoch bekomme ich immer die Meldung "Die Auflistung wurde geändert. Die Enumerationsvorgang kann
    möglicherweise nicht ausgeführt werden".

    Ist damit gemeint, dass während der Sub, sich die Anzahl der Items der Liste ListeVerbessertesDeck sich nicht ändern darf?
    Danke

    KristallBaum
    @KristallBaum Du hast eine For-Schleife zu viel:

    VB.NET-Quellcode

    1. Private Shared Sub ListeErweitern()
    2. For Each item In ListeGanzesDeck
    3. If Not ListeMinus2.Contains(item) Then
    4. ListeVerbessertesDeck.Add(item)
    5. End If
    6. Next
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die einzige Möglichkeit, wie dieser Fehler hier auftreten kann, ist wenn ListeVerbessertesDeck und ListeGanzesDeck ein und die selbe Liste sind.
    Schreib mal vor die For-Schleife das hin:

    VB.NET-Quellcode

    1. MessageBox.Show((ListeGanzesDeck Is ListeVerbessertesDeck).ToString)
    und poste, was angezeigt wird.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Vermutlich modifizierst du die Liste ListeGanzesDeck innerhalb der for each Schleife.
    Eine Liste, über die man mittels for each iteriert, darf währenddessen nicht verändert werden.

    RodFromGermany hat einen funktionierenden Ansatz gepostet. Wir wissen nicht wo du einen Fehler eingebaut hast.