Mega Code Archive

 
Categories / VB.Net Tutorial / Collections
 

Deep Clone

Public Class Point   Implements ICloneable   Public X as Integer   Public Y as Integer   Sub New(XX as Integer, YY as Integer)     X = XX     Y = YY   End Sub   Public Overloads Function ToString() As String     Return "(" & X & "," & Y & ")"   End Function   Public Overridable Function Clone() As Object _                      Implements ICloneable.Clone     Return New Point(X, Y)   End Function End Class Public Class Line    Inherits Point   Public StartPoint As Point   Sub New(X As Integer, Y As Integer, Other As Point)     MyBase.New(X, Y)     StartPoint = Other.Clone()   End Sub   Public Overloads Function ToString() As String     Return "(" & Me.X & "," & Me.Y & ")"  & _       " Other: " & StartPoint.ToString()   End Function   Public Overrides Function Clone() As Object     Return New Line(Me.X, Me.Y, StartPoint.Clone())   End Function End Class Module Test    Sub Main()     Dim P as New Point(4, 5)     Dim P1 As New Line(3,4, P)     Dim P2 As Line     P2 = P1.Clone()     P2.StartPoint.X = 5     P2.StartPoint.Y = 4     Console.WriteLine("First Object: " & P1.ToString())      Console.WriteLine("Cloned Object: " & P2.ToString())   End Sub End Module First Object: (3,4) Other: (4,5) Cloned Object: (3,4) Other: (5,4)