Passing Parameters by Value and by Reference
Visual Basic .NET differentiates between value types and reference types . All the intrinsic types (Integer, Long, etc.), as well as structures (described in Chapter 7) are value types. Classes are reference types, as are interfaces (described in Chapter 8).
By default, value types are passed into methods by value. This means that when a value object is passed to a method, a temporary copy of the object is created within that method. Once the method completes, the copy is discarded.
When you pass a reference type to a method a copy is made of the reference as well. The key difference is that the original reference and its copy both refer to the same actual object (on the heap). Changes you make through the copy of the reference are reflected back in the calling method. Thus, even though you are passing a copy of the reference you are “passing by reference”—that is, you are giving the method you are calling a reference to the actual object which it can modify.
Although passing by value is the normal case, there are times when
you will want to pass value objects by reference. Visual Basic .NET
allows you to make your intention explicit by using either the
ByVal keyword or the
keyword, as explained in the following sections.
Passing Parameters by Value
In many of the method calls shown in the
previous sections, the parameters were marked with the keyword
ByVal. This indicates that the arguments are passed to the method by value; that ...