Bagikan melalui


Perbedaan antara Meneruskan Argumen Berdasarkan Nilai dan Referensi (Visual Basic)

Ketika Anda meneruskan satu atau beberapa argumen ke prosedur, setiap argumen sesuai dengan elemen pemrograman yang mendasarinya dalam kode panggilan. Anda dapat meneruskan nilai elemen dasar ini, atau referensi untuk itu. Ini dikenal sebagai metode penerusan.

Meneruskan Berdasarkan Nilai

Anda meneruskan argumen berdasarkan nilai dengan menentukan kata kunci ByVal untuk parameter yang sesuai dalam definisi prosedur. Ketika Anda menggunakan metode penerusan ini, Visual Basic menyalin nilai elemen pemrograman yang mendasarinya ke dalam variabel lokal dalam prosedur. Kode prosedur tidak memiliki akses ke elemen dasar dalam kode panggilan.

Meneruskan Berdasarkan Referensi

Anda meneruskan argumen berdasarkan referensi dengan menentukan kata kunci ByRef untuk parameter yang sesuai dalam definisi prosedur. Ketika Anda menggunakan metode penerusan ini, Visual Basic memberikan prosedur referensi langsung ke elemen pemrograman yang mendasarinya dalam kode panggilan.

Metode Penerusan dan Jenis Elemen

Pilihan metode penerusan tidak sama dengan klasifikasi jenis elemen yang mendasarinya. Meneruskan berdasarkan nilai atau berdasarkan referensi merujuk pada apa yang Visual Basic berikan ke kode prosedur. Jenis nilai atau jenis referensi merujuk pada bagaimana elemen pemrograman disimpan dalam memori.

Namun, metode penerusan dan jenis elemen saling terkait. Nilai jenis referensi adalah penunjuk ke data di tempat lain dalam memori. Artinya, ketika Anda meneruskan jenis referensi berdasarkan nilai, kode prosedur memiliki penunjuk ke data elemen yang mendasarinya, meskipun tidak dapat mengakses elemen yang mendasari itu sendiri. Misalnya, jika elemen adalah variabel larik, kode prosedur tidak memiliki akses ke variabel itu sendiri, tetapi dapat mengakses anggota larik.

Kemampuan untuk Memodifikasi

Ketika Anda meneruskan elemen yang tidak dapat dimodifikasi sebagai argumen, prosedur tidak akan pernah dapat memodifikasinya dalam kode panggilan, baik yang diteruskan ByVal atau ByRef.

Untuk elemen yang dapat dimodifikasi, tabel berikut merangkum interaksi antara jenis elemen dan metode penerusan.

Jenis elemen Diteruskan ByVal Diteruskan ByRef
Jenis nilai (hanya berisi nilai) Prosedur tidak dapat mengubah variabel atau anggotanya. Prosedur dapat mengubah variabel dan anggotanya.
Jenis referensi (berisi penunjuk ke instans kelas atau struktur) Prosedur tidak dapat mengubah variabel tetapi dapat mengubah anggota instans yang ditunjuknya. Prosedur dapat mengubah variabel dan anggota instans yang ditunjuknya.

Lihat juga