Bagikan melalui


Cara: Mengatur Argumen agar Diteruskan dengan Nilai (Visual Basic)

Deklarasi prosedur menentukan mekanisme lolos. Jika parameter dinyatakan ByRef, Visual Basic mengharapkan untuk meneruskan argumen yang sesuai berdasarkan referensi. Prosedur ini memungkinkan perubahan nilai elemen pemrograman yang mendasari argumen dalam kode yang memanggil. Jika Anda ingin melindungi elemen dasar dari perubahan tersebut, Anda dapat menggantikan mekanisme passing dalam panggilan prosedur dengan membungkus nama argumen dalam tanda kurung. Tanda kurung ini merupakan tambahan dari tanda kurung yang menyertakan daftar argumen dalam pemanggilan.

Kode panggilan tidak dapat mengambil alih mekanisme ByVal .

Untuk memaksa argumen diteruskan berdasarkan nilai

  • Jika parameter yang sesuai dinyatakan ByVal dalam prosedur, Anda tidak perlu mengambil langkah tambahan. Visual Basic sudah mengharapkan untuk meneruskan argumen menurut nilai.

  • Jika parameter yang sesuai dinyatakan dalam prosedur, sertakan ByRef argumen dalam tanda kurung dalam panggilan prosedur.

Contoh

Contoh berikut mengambil alih ByRef deklarasi parameter. Dalam panggilan yang mengharuskan ByVal, perhatikan dua tingkat tanda kurung.

Sub setNewString(ByRef inString As String)
    inString = "This is a new value for the inString argument."
    MsgBox(inString)
End Sub
Dim str As String = "Cannot be replaced if passed ByVal"

' The following call passes str ByVal even though it is declared ByRef.
Call setNewString((str))
' The parentheses around str protect it from change.
MsgBox(str)

' The following call allows str to be passed ByRef as declared.
Call setNewString(str)
' Variable str is not protected from change.
MsgBox(str)

Ketika str diapit dalam tanda kurung tambahan dalam daftar argumen, setNewString prosedur tidak dapat mengubah nilainya dalam kode panggilan, dan MsgBox menampilkan "Tidak dapat diganti jika diteruskan ByVal". Ketika str tidak diapit dalam tanda kurung tambahan, prosedur dapat mengubahnya, dan MsgBox menampilkan "Ini adalah nilai baru untuk argumen inString."

Mengkompilasi kode

Saat Anda meneruskan variabel berdasarkan referensi, Anda harus menggunakan ByRef kata kunci untuk menentukan mekanisme ini.

Default dalam Visual Basic adalah meneruskan argumen berdasarkan nilai. Namun, adalah praktik pemrograman yang baik untuk menyertakan kata kunci ByVal atau ByRef dengan setiap parameter yang dideklarasikan. Ini membuat kode Anda lebih mudah dibaca.

Pemrograman yang Kuat

Jika prosedur mendeklarasikan parameter ByRef, eksekusi kode yang benar mungkin bergantung pada mampu mengubah elemen yang mendasar dalam kode panggilan. Jika kode panggilan mengambil alih mekanisme panggilan ini dengan menyertakan argumen dalam tanda kurung, atau jika melewati argumen yang tidak dapat dimodifikasi, prosedur tidak dapat mengubah elemen yang mendasar. Ini mungkin menghasilkan hasil yang tidak terduga dalam kode panggilan.

Keamanan .NET Framework

Selalu ada potensi risiko dalam memungkinkan prosedur untuk mengubah nilai yang mendasar argumen dalam kode panggilan. Pastikan Anda mengharapkan nilai ini diubah, dan bersiaplah untuk memeriksa validitas sebelum menggunakannya.

Lihat juga