Bagikan melalui


Masa pakai di Visual Basic

Masa pakai elemen yang dideklarasikan adalah periode waktu yang tersedia untuk digunakan. Variabel adalah satu-satunya elemen yang memiliki masa pakai. Untuk tujuan ini, kompiler memperlakukan parameter prosedur dan pengembalian fungsi sebagai kasus variabel khusus. Masa pakai variabel mewakili periode waktu di mana ia dapat menyimpan nilai. Nilainya dapat berubah selama masa pakainya, tetapi selalu memiliki beberapa nilai.

Masa Pakai yang Berbeda

Variabel anggota (dideklarasikan pada tingkat modul, di luar prosedur apa pun) biasanya memiliki masa pakai yang sama dengan elemen tempat ia dinyatakan. Variabel yang tidak dibagikan yang dideklarasikan dalam kelas atau struktur ada sebagai salinan terpisah untuk setiap instans kelas atau struktur tempat ia dideklarasikan. Setiap variabel tersebut memiliki masa pakai yang sama dengan instansnya. Namun, variabel Shared hanya memiliki satu masa pakai, yang berlangsung selama seluruh aplikasi Anda berjalan.

Variabel lokal (dideklarasikan di dalam prosedur) hanya ada saat prosedur tempat variabel tersebut dinyatakan berjalan. Ini juga berlaku untuk parameter prosedur tersebut dan untuk pengembalian fungsi apa pun. Namun, jika prosedur tersebut memanggil prosedur lain, variabel lokal mempertahankan nilainya saat prosedur yang disebut berjalan.

Awal Masa Pakai

Masa pakai variabel lokal dimulai ketika kontrol memasuki prosedur tempat ia dinyatakan. Setiap variabel lokal diinsialisasi ke nilai default untuk jenis datanya segera setelah prosedur mulai berjalan. Ketika prosedur menemukan pernyataan Dim yang menentukan nilai awal, prosedur menetapkan variabel tersebut ke nilai tersebut, bahkan jika kode Anda telah menetapkan nilai lain untuknya.

Setiap anggota variabel struktur diinsialisasi seolah-olah itu adalah variabel yang terpisah. Demikian pula, setiap elemen dari variabel array diinsialisasi secara individual.

Variabel yang dideklarasikan dalam blok di dalam prosedur (seperti perulangan For) diinisialisasi pada entri ke prosedur. Inisialisasi ini berlaku baik kode Anda pernah mengeksekusi blok atau tidak.

Akhir Masa Pakai

Ketika prosedur berakhir, nilai-nilai variabel lokalnya tidak dipertahankan, dan Visual Basic mendapatkan kembali memori mereka. Ketika Anda memanggil prosedur di lain waktu, semua variabel lokalnya dibuat lagi dan dimasukkan kembali.

Ketika sebuah instans dari kelas atau struktur berakhir, variabel yang tidak dibagikan kehilangan memori dan nilai-nilainya. Setiap instans baru dari kelas atau struktur menciptakan dan menginisialisasi ulang variabel yang tidak dibagikan. Namun, variabel Shared dipertahankan sampai aplikasi Anda berhenti berjalan.

Perpanjangan Masa Pakai

Jika Anda mendeklarasikan variabel lokal dengan kata kunci Static, masa pakainya lebih lama dari waktu eksekusi prosedurnya. Tabel berikut ini memperlihatkan bagaimana deklarasi prosedur menentukan berapa lama variabel Static ada.

Lokasi prosedur dan berbagi Masa pakai variabel statis dimulai Masa pakai variabel statis berakhir
Dalam modul (dibagikan secara default) Pertama kali prosedur ini disebut Ketika aplikasi Anda berhenti berjalan
Di kelas, Shared (prosedur bukan anggota instans) Pertama kali prosedur ini disebut baik pada instans tertentu atau pada nama kelas atau struktur itu sendiri Ketika aplikasi Anda berhenti berjalan
Dalam instans kelas, bukan Shared (prosedur adalah anggota instans) Pertama kali prosedur dipanggil pada instans tertentu Ketika instans dirilis untuk pengumpulan sampah (GC)

Variabel Statis Dengan Nama yang Sama

Anda dapat mendeklarasikan variabel statis dengan nama yang sama di lebih dari satu prosedur. Jika Anda melakukan ini, kompiler Visual Basic menganggap setiap variabel tersebut sebagai elemen terpisah. Inisialisasi salah satu variabel ini tidak mempengaruhi nilai yang lain. Hal yang sama berlaku jika Anda menentukan prosedur dengan satu set kelebihan beban dan mendeklarasikan variabel statis dengan nama yang sama di setiap kelebihan beban.

Berisi Elemen untuk Variabel Statis

Anda dapat mendeklarasikan variabel lokal statis dalam kelas, yaitu, dalam prosedur di kelas itu. Namun, Anda tidak dapat mendeklarasikan variabel lokal statis dalam struktur, baik sebagai anggota struktur atau sebagai variabel lokal dari prosedur dalam struktur itu.

Contoh

Deskripsi

Contoh berikut mendeklarasikan variabel dengan kata kunci Static. (Perhatikan bahwa Anda tidak memerlukan kata kunci Dim saat Pernyataan Dim menggunakan pengubah seperti Static.)

Kode

Function runningTotal(ByVal num As Integer) As Integer
    Static applesSold As Integer
    applesSold = applesSold + num
    Return applesSold
End Function

Komentar

Dalam contoh sebelumnya, variabel applesSold terus ada setelah prosedur runningTotal kembali ke kode panggilan. Ketika Anda memanggil runningTotal di lain waktu, applesSold mempertahankan nilai yang dihitung sebelumnya.

Jika applesSold telah dinyatakan tanpa menggunakan Static, nilai akumulasi sebelumnya tidak akan dipertahankan di seluruh panggilan ke runningTotal. Ketika Anda memanggil runningTotal di lain waktu, applesSold akan dibuat ulang dan diinisialisasi menjadi 0, dan runningTotal hanya akan mengembalikan nilai yang sama dengan yang dipanggil.

Mengkompilasi kode

Anda dapat menginisialisasi nilai variabel lokal statis sebagai bagian dari deklarasinya. Jika Anda mendeklarasikan array menjadi Static, Anda dapat menginisialisasi peringkatnya (jumlah dimensi), panjang setiap dimensi, dan nilai elemen individual.

Keamanan

Dalam contoh sebelumnya, Anda dapat menghasilkan masa pakai yang sama dengan mendeklarasikan applesSold pada tingkat modul. Namun, jika Anda mengubah cakupan variabel dengan cara ini, prosedur tidak akan lagi memiliki akses eksklusif ke sana. Karena prosedur lain dapat mengakses applesSold dan mengubah nilainya, total yang berjalan bisa tidak dapat diandalkan dan kode bisa lebih sulit dipertahankan.

Lihat juga