VB.Net Tutorial/Collections/ICloneable — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:53, 26 мая 2010
Deep Clone
<source lang="vbnet">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</source>
First Object: (3,4) Other: (4,5) Cloned Object: (3,4) Other: (5,4)
ICloneable
<source lang="vbnet">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 Module Test
Sub Main() Dim P1 As New Point(5, 5) Dim P2 As Point P2 = P1.Clone() Console.WriteLine("First Object: " & P1.ToString()) Console.WriteLine("Cloned Object: " & P2.ToString()) End Sub
End Module</source>
First Object: (5,5) Cloned Object: (5,5)
Shallow copy
<source lang="vbnet">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 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) 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</source>
First Object: (3,4) Other: (5,4) Cloned Object: (3,4) Other: (5,4)