A copy constructor creates a new object by copying variables from an existing object of the same type. For example, you might want to pass a Time object to a Time constructor so that the new Time object has the same values as the old one.
VB.NET does not provide a copy constructor, so if you want one you must provide it yourself. Such a constructor copies the elements from the original object into the new one:
Public Sub New(ByVal existingObject As Time) year = existingObject.Year month = existingObject.Month date = existingObject.Date hour = existingObject.Hour minute = existingObject.Minute second = existingObject.Second End Sub
A copy constructor is invoked by instantiating an object of type Time and passing it the name of the Time object to be copied:
Dim t2 As New Time(existingObject)
Here an existing Time object (existingObject) is passed as a parameter to the copy constructor that will create a new Time object ( ), as shown in Example 5-7.
Option Strict On
Imports System
Public Class Time
' Private variables
Private year As Integer
Private month As Integer
Private date As Integer
Private hour As Integer
Private minute As Integer
Private second As Integer = 30
' Public methods
Public Sub DisplayCurrentTime( )
Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", _
month, date, year, hour, minute, second)
End Sub 'DisplayCurrentTime
Public Sub New( _
ByVal theYear As Integer, _
ByVal theMonth As Integer, _
ByVal theDate As Integer, _
ByVal theHour As Integer, _
ByVal theMinute As Integer)
year = theYear
month = theMonth
date = theDate
hour = theHour
minute = theMinute
second = theSecond
End Sub
Public Sub New(existingObject As Time)
year = existingObject.Year
month = existingObject.Month
date = existingObject.Date
hour = existingObject.Hour
minute = existingObject.Minute
second = existingObject.Second
End Sub
End Class 'Time
Module Module1
Sub Main( )
Dim timeObject As New Time(2005, 3, 25, 9, 35)
Dim t2 As New Time(timeObject)
timeObject.DisplayCurrentTime( )
t2.DisplayCurrentTime( )
End Sub
End Module
Output:
3/25/2005 9:35:30
3/25/2005 9:35:30
|
|
| Top |