Deep Clone : ICloneable « Collections « VB.Net Tutorial






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)








8.19.ICloneable
8.19.1.ICloneable
8.19.2.Deep Clone
8.19.3.Shallow copy