Bagikan melalui


Perbedaan Antara Mengoper Argumen Melalui Nilai dan Berdasarkan Referensi (Visual Basic)

Saat Anda meneruskan satu atau beberapa argumen ke prosedur, setiap argumen sesuai dengan elemen pemrograman yang mendasar dalam kode panggilan. Anda dapat meneruskan nilai elemen yang mendasar ini, atau referensi padanya. Ini dikenal sebagai mekanisme peralihan.

Meneruskan menurut Nilai

Anda meneruskan argumen menurut nilai dengan menentukan kata kunci ByVal untuk parameter yang sesuai dalam definisi prosedur. Saat Anda menggunakan mekanisme passing ini, Visual Basic menyalin nilai elemen pemrograman yang mendasar ke dalam variabel lokal dalam prosedur. Kode prosedur tidak memiliki akses ke elemen yang mendasar dalam kode panggilan.

Meneruskan Berdasarkan Referensi

Anda meneruskan argumen berdasarkan referensi dengan menentukan kata kunci ByRef untuk parameter yang sesuai dalam definisi prosedur. Saat Anda menggunakan mekanisme passing ini, Visual Basic memberikan prosedur referensi langsung ke elemen pemrograman dasar dalam kode panggilan.

Mekanisme Passing dan Jenis Elemen

Pilihan mekanisme passing tidak sama dengan klasifikasi jenis elemen dasar. Pewarisan nilai atau referensi mengacu pada apa yang diberikan Visual Basic kepada kode prosedur. Jenis nilai atau jenis referensi mengacu pada bagaimana elemen pemrograman disimpan dalam memori.

Namun, mekanisme pengoperasian dan jenis elemen saling terkait. Nilai jenis referensi adalah penunjuk ke data di tempat lain dalam memori. Ini berarti bahwa ketika Anda meneruskan jenis referensi menurut nilai, kode prosedur memiliki penunjuk ke data elemen yang mendasar, meskipun tidak dapat mengakses elemen dasar itu sendiri. Misalnya, jika elemen adalah variabel array, kode prosedur tidak memiliki akses ke variabel itu sendiri, tetapi dapat mengakses anggota array.

Kemampuan untuk Memodifikasi

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

Untuk elemen yang dapat dimodifikasi, tabel berikut ini meringkas interaksi antara jenis elemen dan mekanisme passing.

Jenis elemen Berlalu ByVal Berlalu ByRef
Tipe nilai (hanya berisi nilai) Prosedur tidak dapat mengubah variabel atau anggotanya. Prosedur ini dapat mengubah variabel dan anggotanya.
Jenis referensi (berisi penunjuk ke kelas atau instans struktur) Prosedur ini tidak dapat mengubah variabel tetapi dapat mengubah anggota dari instans yang ditunjukkannya. Prosedur ini dapat mengubah variabel dan anggota instans yang ditujunya.

Lihat juga