Because loc1 is a structure (not a class), it is created on the stack. Thus, in Example 7-1, when the New keyword is called:
Dim loc1 As New Location(200, 300)
the resulting Location object is created on the stack.
The New keyword calls the Location constructor. However, unlike with a class, it is possible to create a structure without using New at all. This is consistent with how built-in type variables (such as Integer) are defined and is illustrated in Example 7-2.
|
Option Strict On
Imports System
Namespace StructureDemonstration
' declare a structure named Location
Public Structure Location
' the Structure has private data
Private myXVal As Integer
Private myYVal As Integer
Public Sub New( _
ByVal xCoordinate As Integer, ByVal yCoordinate As Integer)
myXVal = xCoordinate
myYVal = yCoordinate
End Sub 'New
' property
Public Property XVal( ) As Integer
Get
Return myXVal
End Get
Set(ByVal Value As Integer)
myXVal = Value
End Set
End Property
Public Property YVal( ) As Integer
Get
Return myYVal
End Get
Set(ByVal Value As Integer)
myYVal = Value
End Set
End Property
' display the structure as a String
Public Overrides Function ToString( ) As String
Return String.Format("{0}, {1}", XVal, YVal)
End Function 'ToString
End Structure 'Location
Class Tester
Public Sub Run( )
' create an instance of the structure
Dim loc1 As Location ' no call to the constructor
loc1.XVal = 75
loc1.YVal = 225
' display the values in the structure
Console.WriteLine("Loc1 location: {0}", loc1)
End Sub 'Run
Shared Sub Main( )
Dim t As New Tester( )
t.Run( )
End Sub 'Main
End Class 'Tester
End Namespace 'StructureDemonstration
In Example 7-2, you initialize the local variables directly, before passing the object to WriteLine( ):
loc1.XVal = 75 loc1.YVal = 225
If you were to comment out one of the assignments and recompile:
Public Sub Run( )
Dim loc1 As Location ' no call to the constructor
loc1.XVal = 75
' loc1.YVal = 225
' display the values in the Structure
Console.WriteLine("Loc1 location: {0}", loc1)
End Sub 'Run
the unassigned value (YVal) would be initialized to its default value (in this case, 0):
loc1.XVal = 75 loc1.YVal = 0
|
|
| Top |