O'Reilly logo

Object-Oriented Programming with Visual Basic .NET by J.P. Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

3.6. Value Types

Reference types and value types are both derived from System.Object. However, value types are treated differently in terms of allocation. When a value type is passed to a ByVal method, the actual value is copied. Also, assigning a value type to another instance of that type causes the value to be copied. The exception occurs when a value type is a reference type's data member; then it is heap allocated right along with the rest of the class.

In the following code fragment, number1 and number2 are two distinct locations in memory that each contain the value 5:

Dim number1 As Integer = 5
Dim number2 As Integer = number1

This contrasts with reference types (classes). Consider the following fragment, in which two objects are instantiated and then one is assigned to the other:

Dim object1 As New Object( )
Dim object2 As New Object( )
   
object2 = object1

After the assignment, there are no longer two objects; object2 is now a reference to object1. The location in memory formerly associated with object2 is now sitting around waiting to be garbage collected.

Sometimes defining a value type is beneficial—especially when you have small amounts of related data (that consist of value types). A perfect example is the Point structure:

Public Structure Point
    Public x As Integer
    Public y As Integer
End Structure

Value types always contain known values. The compiler automatically generates a default constructor that is used to initialize all the values of the structure to a ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required