Tim cubierto lo que se les pregunta directamente, sino otra cosa a tener en cuenta es que cualquier variable de tipo de referencia, como una clase definida por el usuario, incluso si se pasa por valor, le permitirá realizar cambios en las propiedades de instancias, etc. que permanezcan. Sin embargo, no le permitirá cambiar el objeto completo. Que puede ser por eso que parecía que se morosos por referencia a
Public Sub (Something As WhateverClass)
Something = New WhateverClass 'will result in no changes when outside this method
Something.Property1 = "Test" 'will result in an updated property when outside this method
End Sub
De MSDN:
El valor de un tipo de referencia es un puntero a los datos de la memoria en otra parte. Esto significa que cuando pasa un tipo de referencia por valor, , el código de procedimiento tiene un puntero a los datos del elemento subyacente, , aunque no puede acceder al elemento subyacente. Para el ejemplo , si el elemento es una variable de matriz, el código de procedimiento no tiene acceso a la variable en sí , pero puede acceder a los miembros de la matriz .
El valor predeterminado es 'ByVal', pero asegúrese de entender qué significa [pasar por valor y por referencia] (http://msdn.microsoft.com/en-us/library/ddck1z30.aspx). –
Casi siempre quiere pasar 'ByVal', y este es, de hecho, el valor predeterminado. No hay ninguna razón para que el código se atempere con 'ByVal' por todos lados; eso es solo "ruido". Solo especifique 'ByRef' explícitamente cuando absolutamente debe tener semántica de paso por referencia. –