Apa Perbedaan ByVal dan ByRef ?
- ByRef = Parameter yang dikirimkan adalah object sehingga perubahan nilai dari object tersebut yang diolah/diubah pada sub/function akan berakibat mengubah juga nilai dari object tersebut secara langsung.
- ByVal = Parameter yang dikirimkan adalah nilai dari sebuah object sehingga anda tidak dapat mengubah nilai Object tersebut, anda hanya dapat mengolah/mengubah nilai object tersebut di dalam sub/function saja, setelah sub/function tersebut selesai, perubahan nilai object di sub/function tidak akan mengubah nilai object yang sebenarnya.
Contoh:
Public Class Form1
'deklarasi variabel x dan y dengan nilai 0
Dim x As Integer = 0
Dim y As Integer = 0
'membuat prosedur dengan parameter x dan y
'parameter x dengan ByRef, parameter y dengan ByVal
Private Sub ProsedurParameter(ByRef x As Integer, ByVal y As Integer)
x = 10 'memberikan nilai 10 untuk x
y = 20 'memberikan nilai 20 untuk y
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'memanggil ProsedurParameter dan memberikan nilai x,y untuk parameter
ProsedurParameter(x, y)
'menampilkan variabel x dan y di messagebox
MsgBox("Nilai X: " & x & ", Nilai Y: " & y)
End Sub
End Class
'deklarasi variabel x dan y dengan nilai 0
Dim x As Integer = 0
Dim y As Integer = 0
'membuat prosedur dengan parameter x dan y
'parameter x dengan ByRef, parameter y dengan ByVal
Private Sub ProsedurParameter(ByRef x As Integer, ByVal y As Integer)
x = 10 'memberikan nilai 10 untuk x
y = 20 'memberikan nilai 20 untuk y
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'memanggil ProsedurParameter dan memberikan nilai x,y untuk parameter
ProsedurParameter(x, y)
'menampilkan variabel x dan y di messagebox
MsgBox("Nilai X: " & x & ", Nilai Y: " & y)
End Sub
End Class
Keterangan:
- Deklarasi variable x dan y dengan default value = 0
- Panggil ProsedurParameter untuk mengubah nilai, x dikirim dengan ByRef (berarti object x nya yang dikirim) sedangkan y dengan ByVal (berarti nilai y nya yang dikirim yaitu 0)
- Isi ProsedurParameter tersebut mengubah nilai x menjadi 10 dan y menjadi 20
- Ketika Prosedur dijalankan maka akan menampilkan ke MessageBox dengan hasil X=10 (berubah) dan Y=0 (tetap)
Terima kasih infonya, akhirnya saya mudeng mas.
ReplyDelete