Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Specifica che un argomento viene passato per valore, in modo che la routine o la proprietà chiamata non possa modificare il valore di una variabile sottostante l'argomento nel codice chiamante. Se non viene specificato alcun modificatore, ByVal è l'impostazione predefinita.
Annotazioni
Poiché è l'impostazione predefinita, non è necessario specificare in modo esplicito la parola chiave nelle firme del ByVal
metodo. Tende a produrre codice rumoroso e spesso porta alla parola chiave non predefinita ByRef
trascurata.
Osservazioni:
Il ByVal
modificatore può essere usato in questi contesti:
Esempio
Nell'esempio seguente viene illustrato l'uso del meccanismo di passaggio del ByVal
parametro con un argomento di tipo riferimento. Nell'esempio l'argomento è c1
, un'istanza della classe Class1
.
ByVal
impedisce al codice nelle procedure di modificare il valore sottostante dell'argomento di riferimento, c1
, ma non protegge i campi e le proprietà accessibili di c1
.
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module