Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Masa pakai elemen yang dideklarasikan adalah periode waktu yang tersedia untuk digunakan. Variabel adalah satu-satunya elemen yang memiliki masa pakai. Untuk tujuan ini, pengkompilasi memperlakukan parameter prosedur dan fungsi yang dikembalikan sebagai kasus khusus variabel. Masa pakai variabel mewakili periode waktu di mana variabel dapat menyimpan nilai. Nilainya dapat berubah selama masa pakainya, tetapi selalu menyimpan beberapa nilai.
Masa Pakai yang Berbeda
Variabel anggota (dinyatakan pada tingkat modul, di luar prosedur apa pun) biasanya memiliki masa pakai yang sama dengan elemen di mana ia dideklarasikan. Variabel nonshared yang dideklarasikan dalam kelas atau struktur ada sebagai salinan terpisah untuk setiap instans kelas atau struktur tempat variabel dideklarasikan. Setiap variabel tersebut memiliki masa pakai yang sama dengan instansnya. Namun, Shared variabel hanya memiliki satu masa pakai, yang berlangsung selama seluruh waktu aplikasi Anda berjalan.
Variabel lokal (dinyatakan di dalam prosedur) hanya ada saat prosedur di mana 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 sedang berjalan.
Awal Masa Pakai
Masa pakai variabel lokal dimulai ketika kontrol memasuki prosedur di mana variabel tersebut dideklarasikan. Setiap variabel lokal diinisialisasi ke nilai default untuk jenis datanya segera setelah prosedur mulai berjalan. Ketika prosedur menemukan Dim pernyataan yang menentukan nilai awal, itu mengatur variabel tersebut ke nilai tersebut, bahkan jika kode Anda telah menetapkan nilai lain kepada mereka.
Setiap anggota variabel struktur diinisialisasi seolah-olah itu adalah variabel terpisah. Demikian pula, setiap elemen variabel array diinisialisasi secara individual.
Variabel yang dideklarasikan dalam blok di dalam prosedur (seperti perulangan For ) diinisialisasi pada entri ke prosedur. Inisialisasi ini berlaku apakah kode Anda pernah menjalankan blok atau tidak.
Akhir Masa Pakai
Ketika prosedur berakhir, nilai variabel lokalnya tidak dipertahankan, dan Visual Basic mengklaim kembali memorinya. Saat berikutnya Anda memanggil prosedur, semua variabel lokalnya dibuat baru dan diinisialisasi ulang.
Ketika instans kelas atau struktur berakhir, variabel yang tidak dibagikan kehilangan memori dan nilainya. Setiap instans baru kelas atau struktur membuat dan menginisialisasi ulang variabel yang tidak dibagikan. Namun, Shared variabel dipertahankan sampai aplikasi Anda berhenti berjalan.
Perpanjangan Masa Pakai
Jika Anda mendeklarasikan variabel lokal dengan Static kata kunci, masa pakainya lebih lama dari waktu eksekusi prosedurnya. Tabel berikut menunjukkan bagaimana deklarasi prosedur menentukan berapa lama Static variabel ada.
| Lokasi prosedur dan pembagian | Masa pakai variabel statis dimulai | Masa pakai variabel statis berakhir |
|---|---|---|
| Dalam modul (dibagikan secara default) | Untuk pertama kali suatu prosedur dipanggil | Saat aplikasi Anda berhenti berjalan |
Di kelas , Shared (prosedur bukan anggota instans) |
Pertama kali prosedur dipanggil baik pada instans tertentu atau pada kelas atau nama struktur itu sendiri | Saat aplikasi Anda berhenti berjalan |
Dalam sebuah contoh dari kelas, bukan Shared (prosedur adalah anggota dari 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 dalam lebih dari satu prosedur. Jika Anda melakukan ini, pengkompilasi Visual Basic menganggap setiap variabel tersebut sebagai elemen terpisah. Inisialisasi salah satu variabel ini tidak memengaruhi nilai yang lain. Hal yang sama berlaku jika Anda menentukan prosedur dengan sekumpulan 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, di dalam prosedur di kelas tersebut. Namun, Anda tidak dapat mendeklarasikan variabel lokal statis dalam struktur, baik sebagai anggota struktur atau sebagai variabel lokal prosedur dalam struktur tersebut.
Contoh
Deskripsi
Contoh berikut mendeklarasikan variabel dengan kata kunci Statis . (Perhatikan bahwa Anda tidak memerlukan Dim kata kunci 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. Lain kali runningTotal dipanggil, applesSold mempertahankan nilai yang dihitung sebelumnya.
Jika applesSold telah dinyatakan tanpa menggunakan Static, nilai akumulasi sebelumnya tidak akan dipertahankan di seluruh panggilan ke runningTotal. Lain kali runningTotal dipanggil, 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 variabel tersebut. Karena prosedur lain dapat mengakses applesSold dan mengubah nilainya, total yang berjalan bisa tidak dapat diandalkan dan kode bisa lebih sulit dipertahankan.