Visual Basic .NET Language
Parole chiave ByVal e ByRef
Ricerca…
Parola chiave ByVal
Parola chiave ByVal prima che il parametro method (o nessuna parola chiave come ByVal sia assunto per impostazione predefinita) dice che il parametro verrà inviato in un modo che non consente al metodo di modificare (assegnare un nuovo valore) la variabile sottostante il parametro.
Non impedisce il contenuto (o lo stato) dell'argomento da modificare se si tratta di una classe.
Class SomeClass
Public Property Member As Integer
End Class
Module Program
Sub Main()
Dim someInstance As New SomeClass With {.Member = 42}
Foo (someInstance)
' here someInstance is not Nothing (still the same object)
' but someInstance.Member is -42 (internal state can still be changed)
Dim number As Integer = 42
Foo(number)
' here number is still 42
End Sub
Sub Foo(ByVal arg As SomeClass)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
Sub Foo(arg As Integer) ' No ByVal or ByRef keyword, ByVal is assumed
arg = -arg
End Sub
End Module
Parola chiave ByRef
La parola chiave ByRef prima del parametro method indica che il parametro verrà inviato in un modo che consente al metodo di modificare (assegnare un nuovo valore) la variabile sottostante il parametro.
Class SomeClass
Public Property Member As Integer
End Class
Module Program
Sub Main()
Dim someInstance As New SomeClass With {.Member = 42}
Foo (someInstance)
' here someInstance is not Nothing
' but someInstance.Member is -42
Bar(someInstance)
' here someInstance is Nothing
End Sub
Sub Foo(ByVal arg As SomeClass)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
Sub Bar(ByRef param As Integer)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
End Module
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow