ArrayList mit Objects zuweisung fehler

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    ArrayList mit Objects zuweisung fehler

    Moin,

    ich habe eine ArrayList mit einer ObjectClass. Um etwas zu überprüfen erstelle ich eine TempVariable als ArrayList und weise ihr die originale ArrayList zu

    VB.NET-Quellcode

    1. Dim aTempList as New ArrayList
    2. aTempList = aNetDriveList ' aNetDriveList wurde zuvor deklariert und befüllt

    Wenn ich nun der TempVariablen einen Wert zuweise wird der komischerweise auch auf die Originale ArrayList übernommen

    VB.NET-Quellcode

    1. ' In diesem Item stand in der aNetDriveList(0).DriveLetter vorher z.b. = "N:"
    2. aTempList(0).DriveLetter = "P:"


    Wenn mir nun die aNetDriveList(0).DriveLetter Ausgeben lasse steht dort trotzdem P: statt N: drin O.o wo ist denn hier mein Denkfehler?

    wo ist denn hier mein Denkfehler?

    Du glaubst, dass a = b das gleiche ist wie a = b.clone. Während das zweite ein "echte" Kopie erzeugt, weist das erste der Variable b nur denselben Zeiger zu wie ihn auch a hat. Du hast also weiterhin EINE Instanz, aber zwei Referenzen. Bei "einfachen" Datentypen (integer, string etc) ist das anders aber bei den anderen Objekten ist das halt so.

    Schreibe er also sein eigene "clone" Prozedur.
    ah okay, dit muss man och erstma wissen *g* danke. Habe es jetzt letztendlich anders gelöst, da ich ja nur die DriveLetter überprüfen möchte, habe ich mir nur diese in einem String zwischengespeichert.

    Aber mit dem Klonen is ne gute sache. Aber wie ich sehe besitzt das die ArrayList nicht. Wie schreibe ich eine eigene Prozedur die ich dann der ArrayList zuweise?
    Eigene Klasse: ArrayListWrapper
    Darin dann einmal "Clone" und "List" (wobei List natürlich wieder die gekapselte ArrayList zurückliefert)
    Problem bei "Clone": Auch die einzelnen Items müssen Clone unterstützen (sonst hätte man zwar eine unabhängige ArrayList, aber die Objektzeiger wären immer noch die originalen)