Structure parameter passed by Value and by Reference
Imports System public class MainClass Shared Sub Main() Dim A As MyStruct Dim B As MyStruct A.X = 1 B = A Console.WriteLine("Initial state StructTests") Console.WriteLine("Are A and B the same? " + (A.Equals(B)).ToString()) Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString()) FunctionPassStructureByReference1(B) Console.WriteLine("After FunctionPassStructureByReference1") Console.WriteLine("Are A and B the same? " + (A.Equals(B)).ToString()) Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString()) A.X = 1 B = A FunctionPassStructureByReference2(B) Console.WriteLine("After FunctionPassStructureByReference2") Console.WriteLine("Are A and B the same? " + (A.Equals(B)).ToString()) Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString()) A.X = 1 B = A FunctionPassStructureByValue(B) Console.WriteLine("After FunctionPassStructureByValue") Console.WriteLine("Are A and B the same? " + (A.Equals(B)).ToString()) Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString()) A.X = 1 B = A FStructByVal2(B) Console.WriteLine("After FStructByVal2") Console.WriteLine("Are A and B the same? " + (A.Equals(B)).ToString()) Console.WriteLine("A.x: " + A.X.ToString() + " B.x " + B.X.ToString()) End Sub Shared Public Sub FunctionPassStructureByReference1(ByRef Y As MyStruct) Y.X = 5 End Sub Shared Public Sub FunctionPassStructureByReference2(ByRef Y As MyStruct) Y = New MyStruct() Y.X = 5 End Sub Shared Public Sub FunctionPassStructureByValue(ByVal Y As MyStruct) Y.X = 5 End Sub Shared Public Sub FStructByVal2(ByVal Y As MyStruct) Y = New MyStruct() Y.X = 5 End Sub Structure MyStruct Public X As Integer End Structure End Class