Ссылки в VB.NET

Несколько неясными для меня являются ссылки (указатели?) На классы в VB.NET. На вопрос, который я собираюсь задать, можно ответить небольшим тестированием, но мне было интересно, может ли кто-нибудь опубликовать достойное объяснение (или ссылки тоже).

Если вы создаете класс:

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

И затем класс, который фактически использует этот класс как свойство:

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

И затем используйте это так:

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

Теперь функцияBooleanCheck всегда вернетсяtrueдаже если ссылка передается новому классуUsingClass «по значению», а не по ссылке. Таким образом, копия класса не сделана, но локальная переменнаяmyReference вUsingClass еще ссылки / указывает на имуществоReference вRuntimeOrSomething.

Как это можно объяснить элегантно?

Ответы на вопрос(6)

Ваш ответ на вопрос