Announcement

Collapse
No announcement yet.

Problem mit For Each über Collection

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit For Each über Collection

    Hi Leute,

    ich bin noch relativ neu in VB.NET, bisher viele Jahre VB6 und heute ist mir etwas seltames über den Weg gelaufen.

    Bei mir läuft folgender For Each einwandfrei:

    Dim lCol As Collection = FremderCode.getCollection
    For Each lItem In lCol
    Anweisungen
    Next

    Nehmen wir an, der Count der Collection lCol ist 2, dann wird bei mir die Schleife auch 2 mal durchlaufen.

    Bei einem Kunden läuft der exakt selbe Code aber anders. Die Schleife wird nur 1 mal durchlaufen. Wenn ich die Collection in der Watch anschaue, sehe ich, das es auch ein 0 (Empty Item) gibt, das ich aber nicht ansprechen kann.

    Gibt es da eventuell eine Einstellung, die dafür sorgt, das die Collection von 0 an durchlaufen wird? So könnte ich mir vorstellen, das er dann das 0te Item überspringt, weil es ja kein gültiges Item ist, dann zum ersten Item geht und somit die Schleife verlässt, weil der Count = 2 erreicht wurde.

    Um diese Theorie zu bekräftigen, habe ich geschaut, welches Item das eine Item ist, das beim Kunden durchlaufen wird -> es ist das 1. Item, nicht das Letzte 2te Item.

    Noch ein Hinweis auf diese Theorie ist, das ich geschaut habe, ob das 1. Item und das 2. Item vielleicht die gleichen Items sind und er deshalb die Collection nur einmal durchläuft. Nein, die Items sind unterschiedlich.

    Das ganze ist mir ein Rätsel, es kann nur eine Einstellung sein.

    Habt ihr eine Idee?

    Thx
    Philipp

  • #2
    Hallo,

    scheint ein BUG im VB.net-Compiler zu sein. Folgender Code wird auch kompiliert und läuft problemlos obwohl die laut Sprachspezifikation nicht sein darf:
    [highlight=vb.net]
    Dim a(10) As Integer
    a(0) = 12
    a(2) = 24
    a(10) = 23 ' dürfte nicht sein -> geht aber
    System.Console.WriteLine(A(0).ToString())
    System.Console.WriteLine(A(10).ToString())
    System.Console.WriteLine(UBound(A).ToString())
    System.Console.WriteLine(LBound(A).ToString())
    [/highlight]

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment

    Working...
    X