Copy VB.NET list object to another list object
vb.net
Solution
If `ReadLocation` is a reference type (a Class), then all variables set to instances of objects of that class will always be references. The `=` operator only ever sets a new reference to an object when it is operating on reference types. It will never make a clone of the object (unless it is a value type). The same is true in C#. The only way to do what you want to do, would be to clone the objects when you add them to the second list. Unfortunately, .NET doesn't provide a simple automatic method for cloning any object. The standard way to do this would be to implement the ICloneable interface in your ReadLocation class. Then you could clone it by calling the clone method:
ReadLocation1 = CType(rl.Clone(), ReadLocation)
However, inside that clone method, you will need to create a new instance of ReadLocation and manually set all of its properties and then return it. For example:
Public Class ReadLocation
Implements ICloneable
Public Function Clone() As Object Implements ICloneable.Clone
Dim clone As New ReadLocation()
clone.Property1 = Me.Property1
clone.Property2 = Me.Property2
Return clone
End Function
Problem
I am having a problem when setting VB.NET list object to another. In the example below I create an instance on `ReadLocations` and than create an object of `ReadLocation` where then I loop through `ReadLocations` and set `ReadLocation1` equal to `rl`. What happens is that if I then go and change `ReadLocation1` to something else (assdfhsd) it will also change the `ReadLocations` index. I am really confused why it would be doing that unless it is "=" sign means referencing instead of actually setting the value. Please help as I am a C# developer but the program I am modifying is in VB.NET. ``` Dim ReadLocations As New List(Of Model.ReadLocation) Dim rl1 As New Model.ReadLocation rl1.LL = "a" Dim rl2 As New Model.ReadLocation rl2.LL = "b" ReadLocations.Add(rl1) ReadLocations.Add(rl2) Dim ReadLocation11 As New Model.ReadLocation For Each rl As Model.ReadLocation In ReadLocations ReadLocation11 = rl Next ```