Bagikan melalui


ByVal (Visual Basic)

Menentukan bahwa argumen diteruskan berdasarkan nilai sededimikian rupa sehingga prosedur atau properti yang dipanggil tidak dapat mengubah nilai variabel yang mendasar argumen dalam kode panggilan. Jika tidak ada pengubah yang ditentukan, ByVal menjadi default.

Catatan

Karena sebagai default, Anda tidak perlu secara eksplisit menentukan kata kunci ByVal dalam tanda tangan metode. Ini cenderung menghasilkan kode berisik dan sering menyebabkan kata kunci ByRef non-default diabaikan.

Keterangan

Pengubah ByVal dapat digunakan dalam konteks ini:

Deklarasikan Pernyataan

Pernyataan Function (Fungsi)

Pernyataan Operator

Pernyataan Properti

Sub Pernyataan

Contoh

Contoh berikut menunjukkan penggunaan mekanisme penerusan parameter ByVal dengan argumen jenis referensi. Dalam contoh, argumennya adalah c1, instans kelas Class1. ByVal mencegah kode dalam prosedur dari mengubah nilai mendasar argumen referensi, c1, tetapi tidak melindungi bidang dan properti c1 yang dapat diakses.

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

Lihat juga