Rückbezug von List(Of T) unterbinden

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Rückbezug von List(Of T) unterbinden

    Die Überschrift ist etwas unaufschlüssig geraten.

    Das Problem ist folgendes:
    Im Code kommt am Anfang einer Methode diese Zeile vor:

    VB.NET-Quellcode

    1. Dim LastList As List(Of String) = ActualFiles

    ActualFiles ist auch eine List(Of String). In ihr werden Pfade gespeichert.
    LastList wird später verwendet um nochmal festzustellen, welche Pfade das waren.

    Nach dieser Deklaration wird

    VB.NET-Quellcode

    1. ActualFiles.Clear()

    aufgerufen.

    Bei diesem Aufruf werden auch alle Einträge in LastList gelöscht.

    Lässt sich das unterbinden? Wenn auch auf Umwegen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Das liegt daran, dass Objektvariablen Referenzen beinhalten und keine Werte.

    VB.NET-Quellcode

    1. Dim Obj1 As New Objekt
    2. Dim Obj2 As Objekt = Obj1
    3. Obj1.Eigenschaft = "Hallo"
    4. Obj2.Eigenschaft = "Welt"
    5. MessageBox.Show(Obj1.Eigenschaft) ' Wird "Welt" ausgeben
    Du müsstest den Copy-Konstruktur aufrufen.
    Falls dieser nicht vorhanden ist, dann wäre die wohl einfachste Methode, jeden Eintrag manuell in die andere Liste zu laden.