Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menentukan bahwa argumen diteruskan oleh nilai, sehingga prosedur atau properti yang dipanggil tidak dapat mengubah nilai variabel yang mendasar argumen dalam kode panggilan. Jika tidak ada pengubah yang ditentukan, ByVal adalah default.
Nota
Karena ini adalah default, Anda tidak perlu secara eksplisit menentukan ByVal kata kunci dalam tanda tangan metode. Ini cenderung menghasilkan kode berisik dan sering menyebabkan kata kunci non-default ByRef diabaikan.
Komentar
Pengubah ByVal dapat digunakan dalam konteks ini:
Contoh
Contoh berikut menunjukkan penggunaan ByVal mekanisme passing parameter dengan argumen jenis referensi. Dalam contoh, argumennya adalah c1, instans kelas Class1.
ByVal mencegah kode dalam prosedur mengubah nilai yang mendasar dari argumen referensi, c1, tetapi tidak melindungi bidang dan properti yang dapat diakses dari 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