Creating Structures Without New

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.

Warning

Creating structures without the keyword New brings little advantage and can create programs that are harder to understand, more error prone, and more difficult to maintain! Proceed at your own risk.

Example 7-2. Creating a structure without New

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 ...

Get Programming Visual Basic .NET, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.