Module Tester
Sub Main()
Dim number1 As Integer = 2
Console.WriteLine("Before calling SquareByValue, " & "number1 is {0}", number1)
SquareByValue(number1) ' passes number1 by value
Console.WriteLine("After returning from SquareByValue, " & "number1 is {0}" & vbCrLf, number1)
Dim number2 As Integer = 2
Console.WriteLine("Before calling SquareByReference, " & "number2 is {0}", number2)
SquareByReference(number2) ' passes number2 by reference
Console.WriteLine("After returning from " & _
"SquareByReference, number2 is {0}" & vbCrLf, number2)
Dim number3 As Integer = 2
Console.WriteLine("Before calling SquareByReference " & "using parentheses, number3 is {0}",number3)
SquareByReference((number3)) ' passes number3 by value
Console.WriteLine("After returning from " & "SquareByReference, number3 is {0}", number3)
End Sub
Sub SquareByValue(ByVal number As Integer)
Console.WriteLine("After entering SquareByValue, " & "number is {0}", number)
number *= number
Console.WriteLine("Before exiting SquareByValue, " & "number is {0}", number)
End Sub
Sub SquareByReference(ByRef number As Integer)
Console.WriteLine("After entering SquareByReference" & ", number is {0}", number)
number *= number
Console.WriteLine("Before exiting SquareByReference" & ", number is {0}", number)
End Sub
End Module
Before calling SquareByValue, number1 is 2
After entering SquareByValue, number is 2
Before exiting SquareByValue, number is 4
After returning from SquareByValue, number1 is 2
Before calling SquareByReference, number2 is 2
After entering SquareByReference, number is 2
Before exiting SquareByReference, number is 4
After returning from SquareByReference, number2 is 4
Before calling SquareByReference using parentheses, number3 is 2
After entering SquareByReference, number is 2
Before exiting SquareByReference, number is 4
After returning from SquareByReference, number3 is 2