ByVal e ByRef com tipo de referência

Por favor veja o código abaixo:

Public Class TypeTest
    Public variable1 As String
End Class

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim t1 As TypeTest = New TypeTest
        Test(t1)
        MsgBox(t1.variable1)
    End Sub

    Public Sub Test(ByVal t1 As TypeTest)
        t1.Variable1 = "Thursday"
    End Sub

End Class

A caixa de mensagem no form_load imprime: quinta-feira, que significa que o objeto (TypeTest) é passado por referência. Qual é a diferença entre usar ByVal e ByRef para o argumento t1 na função chamada: Teste.

questionAnswers(3)

yourAnswerToTheQuestion