Language Basics VB.Net

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