This seems to work, but is it the best way to implement a deep clone?
Code:Public Class Person Public Property name() As String Public Property numbers As List(Of Integer) Public Function MakeACopy() As Person Dim newone As Person newone = DirectCast(Me.MemberwiseClone(), Person) newone.numbers = New List(Of Integer) For i = 0 To Me.numbers.Count - 1 newone.numbers.Add(Me.numbers(i)) Next Return newone End Function End Class Module Module1 Sub Main() Dim Aperson As New Person Aperson.name = "Alpha" Aperson.numbers = New List(Of Integer) For i = 1 To 5 Aperson.numbers.Add(i) Next Dim Bperson As New Person Bperson = Aperson.MakeACopy Bperson.name = "Beta" Console.WriteLine(Aperson.name & ":" & Bperson.Name) Bperson.numbers.Clear() For i = 6 To 10 Bperson.numbers.Add(i) Next For i = 0 To 4 Console.WriteLine(Aperson.numbers(i).ToString & ":" & Bperson.numbers(i).ToString) Next Console.Read() End Sub End Module




Reply With Quote