Mega Code Archive

 
Categories / VB.Net / Language Basics
 

Object parameter passed by Value and by Reference

Imports System public class MainClass    Shared Sub Main()         Dim A As New MyObject()         Dim B As MyObject = A         A.X = 1         Console.WriteLine("Initial state")         Console.WriteLine("Are A and B the same? " + (A Is B).ToString())         Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString())         FunctionPassObjectByReference1(B)         Console.WriteLine("After FobjByRef1")         Console.WriteLine("Are A and B the same? " + (A Is B).ToString())         Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString())         A.X = 1         B = A         FunctionPassObjectByReference2(B)         Console.WriteLine("After FobjByRef2")         Console.WriteLine("Are A and B the same? " + (A Is B).ToString())         Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString())         A.X = 1         B = A         FunctionPassObjectByValue1(B)         Console.WriteLine("After FobjByVal1")         Console.WriteLine("Are A and B the same? " + (A Is B).ToString())         Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString())         A.X = 1         B = A         FunctionPassObjectByValue2(B)         Console.WriteLine("After FobjByVal2")         Console.WriteLine("Are A and B the same? " + (A Is B).ToString())         Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString())             End Sub    Shared Public Sub FunctionPassObjectByReference1(ByRef Y As MyObject)         Y.X = 5     End Sub    Shared Public Sub FunctionPassObjectByReference2(ByRef Y As MyObject)         Y = New MyObject()         Y.X = 5     End Sub    Shared Public Sub FunctionPassObjectByValue1(ByVal Y As MyObject)         Y.X = 5     End Sub    Shared Public Sub FunctionPassObjectByValue2(ByVal Y As MyObject)         Y = New MyObject()         Y.X = 5     End Sub     Class MyObject         Public X As Integer     End Class End Class