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
Related examples in the same category