Referencias en VB.NET

Algo poco claro para mí son las referencias (¿punteros?) A las clases en VB.NET. La pregunta que estoy a punto de hacer puede responderse con un poco de prueba, pero me preguntaba si alguien podría publicar una explicación decente (o enlaces, también).

Si creas una clase:

Public Class ReferenceClass

    Private myBooleanValue As Boolean = False
    Public Property BooleanValue As Boolean
        Get
            Return myBooleanValue
        End Get
        Set(value As Boolean)
            myBooleanValue = value
        End Set
    End Property

End Class

Y luego una clase que realmente usa esta clase como una propiedad:

Public Class UsingClass

     Private myReference As ReferenceClass
     Public Property Reference As ReferenceClass
        Get
             return myReference
         End Get
         Set(value As ReferenceClass)
             myReference = value
         End Set
     End Property

     Public Sub New(ByVal Reference As ReferenceClass)
         myReference = Reference
     End Sub

End Class

Y luego úsalo así:

Public Class RuntimeOrSomething

     Public Shared myReference As ReferenceClass
     Public Shared ReadOnly Property Reference As ReferenceClass
         Get
             If myReference Is Nothing Then myReference = new ReferenceClass()
             return myReference
         End Get
     End Property

     Public Shared Function BooleanCheck() As Boolean
         Reference.BooleanValue = True
         Dim tempClass As New UsingClass(Reference)
         tempClass.Reference.BooleanValue = False

         Return (tempClass.Reference.BooleanValue = Reference.BooleanValue)
     End Sub

     Public Shared Sub DoNothing()
          Reference.BooleanValue = True
          Dim someBoolean As Boolean = BooleanCheck

          ' Now Reference.Booleanvalue is "False"
     End Sub

End Class

Ahora la funciónBooleanCheck siempre regresarátrue, aunque la referencia se pase a la nueva claseUsingClass "por valor", no por referencia. Entonces no se hace una copia de la clase, sino la variable localmyReference enUsingClass Todavía referencias / puntos a la propiedadReference enRuntimeOrSomething.

¿Cómo se puede explicar esto elegantemente?

Respuestas a la pregunta(6)

Su respuesta a la pregunta