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.
Mendeklarasikan dan mengalokasikan ruang penyimpanan untuk satu atau beberapa variabel.
Sintaksis
[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ]
Dim [ WithEvents ] variablelist
Bagian
attributelistFakultatif. Lihat Daftar Atribut.
accessmodifierFakultatif. Dapat berupa salah satu hal berikut:
SharedFakultatif. Lihat Dibagikan.
ShadowsFakultatif. Lihat Bayangan.
StaticFakultatif. Lihat Statis.
ReadOnlyFakultatif. Lihat ReadOnly.
WithEventsFakultatif. Menentukan bahwa ini adalah variabel objek yang merujuk ke instans kelas yang dapat menaikkan peristiwa. Lihat WithEvents.
variablelistDibutuhkan. Daftar variabel yang dideklarasikan dalam pernyataan ini.
variable [ , variable ... ]Setiap
variablememiliki sintaks dan bagian berikut:variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]Bagian Deskripsi variablenameDibutuhkan. Nama variabel. Lihat Nama Elemen yang Dideklarasikan. boundslistFakultatif. Daftar batas setiap dimensi variabel array. NewFakultatif. Membuat instans baru kelas saat Dimpernyataan berjalan.datatypeFakultatif. Jenis data variabel. WithFakultatif. Memperkenalkan daftar penginisialisasi objek. propertynameFakultatif. Nama properti di kelas tempat Anda membuat instans. propinitializerDiperlukan setelah propertyname=. Ekspresi yang dievaluasi dan ditetapkan ke nama properti.initializerOpsional jika Newtidak ditentukan. Ekspresi yang dievaluasi dan ditetapkan ke variabel saat dibuat.
Komentar
Pengkompilasi Visual Basic menggunakan Dim pernyataan untuk menentukan jenis data variabel dan informasi lainnya, seperti kode apa yang dapat mengakses variabel. Contoh berikut mendeklarasikan variabel untuk menyimpan Integer nilai.
Dim numberOfStudents As Integer
Anda dapat menentukan jenis data apa pun atau nama enumerasi, struktur, kelas, atau antarmuka.
Dim finished As Boolean
Dim monitorBox As System.Windows.Forms.Form
Untuk jenis referensi, Anda menggunakan New kata kunci untuk membuat instans baru kelas atau struktur yang ditentukan oleh jenis data. Jika Anda menggunakan New, Anda tidak menggunakan ekspresi inisialisasi. Sebagai gantinya, Anda menyediakan argumen, jika diperlukan, ke konstruktor kelas tempat Anda membuat variabel.
Dim bottomLabel As New System.Windows.Forms.Label
Anda dapat mendeklarasikan variabel dalam prosedur, blok, kelas, struktur, atau modul. Anda tidak dapat mendeklarasikan variabel dalam file sumber, namespace, atau antarmuka. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Bawaan.
Variabel yang dideklarasikan pada tingkat modul, di luar prosedur apa pun, adalah variabel atau bidanganggota. Variabel anggota berada dalam cakupan di seluruh kelas, struktur, atau modul mereka. Variabel yang dideklarasikan pada tingkat prosedur adalah variabel lokal. Variabel lokal hanya berada dalam cakupan dalam prosedur atau bloknya.
Pengubah akses berikut digunakan untuk mendeklarasikan variabel di luar prosedur: Public, , ProtectedFriend, Protected Friend, dan Private. Untuk informasi selengkapnya, lihat Tingkat akses di Visual Basic.
Kata Dim kunci bersifat opsional dan biasanya dihilangkan jika Anda menentukan salah satu pengubah berikut: Public, FriendProtected, Protected Friend, Private, Shared, Shadows, Static, , ReadOnly, atau WithEvents.
Public maximumAllowed As Double
Protected Friend currentUserName As String
Private salary As Decimal
Static runningTotal As Integer
Jika Option Explicit aktif (default), pengkompilasi memerlukan deklarasi untuk setiap variabel yang Anda gunakan. Untuk informasi selengkapnya, lihat Opsi Pernyataan Eksplisit.
Menentukan nilai awal
Anda dapat menetapkan nilai ke variabel saat dibuat. Untuk jenis nilai, Anda menggunakan penginisialisasi untuk menyediakan ekspresi yang akan ditetapkan ke variabel. Ekspresi harus mengevaluasi ke konstanta yang dapat dihitung pada waktu kompilasi.
Dim quantity As Integer = 10
Dim message As String = "Just started"
Jika penginisialisasi ditentukan dan jenis data tidak ditentukan dalam klausa As , inferensi jenis digunakan untuk menyimpulkan jenis data dari penginisialisasi. Dalam contoh berikut, baik num1 maupun num2 secara ketat ditentukan sebagai bilangan bulat. Dalam deklarasi kedua, inferensi jenis menyimpulkan jenis dari nilai 3.
' Use explicit typing.
Dim num1 As Integer = 3
' Use local type inference.
Dim num2 = 3
Inferensi jenis berlaku pada tingkat prosedur. Ini tidak berlaku di luar prosedur di kelas, struktur, modul, atau antarmuka. Untuk informasi selengkapnya tentang inferensi jenis, lihat Pernyataan Inferensi Opsi dan Inferensi Jenis Lokal.
Untuk informasi tentang apa yang terjadi ketika tipe data atau penginisialisasi tidak ditentukan, lihat Jenis dan Nilai Data Default nanti dalam topik ini.
Anda dapat menggunakan penginisialisasi objek untuk mendeklarasikan instans jenis bernama dan anonim. Kode berikut membuat instans Student kelas dan menggunakan penginisialisasi objek untuk menginisialisasi properti.
Dim student1 As New Student With {.First = "Michael",
.Last = "Tucker"}
Untuk informasi selengkapnya tentang penginisialisasi objek, lihat Cara: Mendeklarasikan Objek dengan Menggunakan Penginisialisasi Objek, Penginisialisasi Objek: Jenis Bernama dan Anonim, dan Tipe Anonim.
Mendeklarasikan beberapa variabel
Anda dapat mendeklarasikan beberapa variabel dalam satu pernyataan deklarasi, menentukan nama variabel untuk masing-masing variabel, dan mengikuti setiap nama array dengan tanda kurung. Beberapa variabel dipisahkan oleh koma.
Dim lastTime, nextTime, allTimes() As Date
Jika Anda mendeklarasikan lebih dari satu variabel dengan satu As klausa, Anda tidak dapat menyediakan penginisialisasi untuk grup variabel tersebut.
Anda dapat menentukan jenis data yang berbeda untuk variabel yang berbeda dengan menggunakan klausul terpisah As untuk setiap variabel yang Anda deklarasikan. Setiap variabel mengambil jenis data yang ditentukan dalam klausul pertama As yang ditemui setelah bagiannya variablename .
Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double
Larik
Anda dapat mendeklarasikan variabel untuk menyimpan array, yang dapat menyimpan beberapa nilai. Untuk menentukan bahwa variabel menyimpan array, ikuti variablename dengan tanda kurung segera. Untuk informasi selengkapnya tentang Arrays, lihat Arrays.
Anda dapat menentukan batas bawah dan atas dari setiap dimensi array. Untuk melakukan ini, sertakan boundslist di dalam tanda kurung. Untuk setiap dimensi, boundslist menentukan batas atas dan secara opsional batas bawah. Batas bawah selalu nol, apakah Anda menentukannya atau tidak. Setiap indeks dapat bervariasi dari nol melalui nilai terikat atasnya.
Dua pernyataan berikut setara. Setiap pernyataan mendeklarasikan array 21 Integer elemen. Saat Anda mengakses array, indeks dapat bervariasi dari 0 hingga 20.
Dim totals(20) As Integer
Dim totals(0 To 20) As Integer
Pernyataan berikut mendeklarasikan array Doubletipe dua dimensi . Array memiliki masing-masing 4 baris (3 + 1) dari 6 kolom (5 + 1). Perhatikan bahwa batas atas mewakili nilai tertinggi yang mungkin untuk indeks, bukan panjang dimensi. Panjang dimensi adalah batas atas ditambah satu.
Dim matrix2(3, 5) As Double
Array dapat memiliki dari 1 hingga 32 dimensi.
Anda dapat membiarkan semua batas kosong dalam deklarasi array. Jika Anda melakukan ini, array memiliki jumlah dimensi yang Anda tentukan, tetapi tidak diinisialisasi. Ini memiliki nilai Nothing sampai Anda menginisialisasi setidaknya beberapa elemennya. Pernyataan Dim harus menentukan batas baik untuk semua dimensi atau tanpa dimensi.
' Declare an array with blank array bounds.
Dim messages() As String
' Initialize the array.
ReDim messages(4)
Jika array memiliki lebih dari satu dimensi, Anda harus menyertakan koma di antara tanda kurung untuk menunjukkan jumlah dimensi.
Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte
Anda dapat mendeklarasikan array panjang nol dengan mendeklarasikan salah satu dimensi array menjadi -1. Variabel yang menyimpan array panjang nol tidak memiliki nilai Nothing. Array dengan panjang nol diperlukan oleh fungsi runtime bahasa umum tertentu. Jika Anda mencoba mengakses array seperti itu, pengecualian runtime terjadi. Untuk informasi selengkapnya, lihat Array.
Anda dapat menginisialisasi nilai array dengan menggunakan array literal. Untuk melakukan ini, kelilingi nilai inisialisasi dengan kurung kurawal ({}).
Dim longArray() As Long = {0, 1, 2, 3}
Untuk array multidireksional, inisialisasi untuk setiap dimensi terpisah diapit kurung kurawal di dimensi luar. Elemen ditentukan dalam urutan baris-utama.
Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}
Untuk informasi selengkapnya tentang array literal, lihat Array.
Jenis dan nilai data default
Tabel berikut ini menjelaskan hasil berbagai kombinasi menentukan jenis data dan penginisialisasi dalam pernyataan Dim .
| Jenis data yang ditentukan? | Inisialisasi ditentukan? | Contoh | Hasil |
|---|---|---|---|
| Tidak. | Tidak. | Dim qty |
Jika Opsi Ketat nonaktif (default), variabel diatur ke Nothing.Jika Option Strict aktif, terjadi kesalahan waktu kompilasi. |
| Tidak. | Ya | Dim qty = 5 |
Jika Infer Opsi aktif (default), variabel mengambil jenis data penginisialisasi. Lihat Inferensi Jenis Lokal. Jika Option Infer nonaktif dan Option Strict nonaktif, variabel mengambil jenis data .ObjectJika Option Infer nonaktif dan Option Strict aktif, kesalahan waktu kompilasi terjadi. |
| Ya | Tidak. | Dim qty As Integer |
Variabel diinisialisasi ke nilai default untuk jenis data. Lihat tabel nanti di bagian ini. |
| Ya | Ya | Dim qty As Integer = 5 |
Jika jenis data penginisialisasi tidak dapat dikonversi ke jenis data yang ditentukan, kesalahan waktu kompilasi terjadi. |
Jika Anda menentukan jenis data tetapi tidak menentukan penginisialisasi, Visual Basic menginisialisasi variabel ke nilai default untuk jenis datanya. Tabel berikut ini memperlihatkan nilai inisialisasi default.
| Jenis data | Nilai standar |
|---|---|
Semua jenis numerik (termasuk Byte dan SByte) |
0 |
Char |
Biner 0 |
Semua jenis referensi (termasuk Object, String, dan semua array) |
Nothing |
Boolean |
False |
Date |
12:00 PAGI 1 Januari tahun 1 (01/01/0001 12:00:00 AM) |
Setiap elemen struktur diinisialisasi seolah-olah itu adalah variabel terpisah. Jika Anda mendeklarasikan panjang array tetapi tidak menginisialisasi elemennya, setiap elemen diinisialisasi seolah-olah itu adalah variabel terpisah.
Masa pakai variabel lokal statis
Variabel Static lokal memiliki masa pakai yang lebih lama daripada prosedur di mana variabel tersebut dideklarasikan. Batas masa pakai variabel tergantung pada di mana prosedur dideklarasikan dan apakah itu Shared.
| Deklarasi prosedur | Variabel diinisialisasi | Variabel berhenti ada |
|---|---|---|
| Dalam modul | Untuk pertama kali suatu prosedur dipanggil | Ketika program Anda menghentikan eksekusi |
Di kelas atau struktur, prosedurnya adalah Shared |
Pertama kali prosedur dipanggil baik pada instans tertentu atau pada kelas atau struktur itu sendiri | Ketika program Anda menghentikan eksekusi |
Di kelas atau struktur, prosedur tidak Shared |
Pertama kali prosedur dipanggil pada instans tertentu | Ketika instans dirilis untuk pengumpulan sampah (GC) |
Atribut dan pengubah
Anda hanya dapat menerapkan atribut ke variabel anggota, bukan ke variabel lokal. Atribut menyumbangkan informasi ke metadata perakitan, yang tidak bermakna untuk penyimpanan sementara seperti variabel lokal.
Pada tingkat modul, Anda tidak dapat menggunakan pengubah Static untuk mendeklarasikan variabel anggota. Pada tingkat prosedur, Anda tidak dapat menggunakan Shared, , ShadowsReadOnly, WithEvents, atau pengubah akses apa pun untuk mendeklarasikan variabel lokal.
Anda dapat menentukan kode apa yang dapat mengakses variabel dengan menyediakan accessmodifier. Variabel anggota kelas dan modul (di luar prosedur apa pun) default ke akses privat, dan variabel anggota struktur default ke akses publik. Anda dapat menyesuaikan tingkat aksesnya dengan pengubah akses. Anda tidak dapat menggunakan pengubah akses pada variabel lokal (di dalam prosedur).
Anda hanya dapat menentukan WithEvents pada variabel anggota, bukan pada variabel lokal di dalam prosedur. Jika Anda menentukan WithEvents, jenis data variabel harus merupakan jenis kelas tertentu, bukan Object. Anda tidak dapat mendeklarasikan array dengan WithEvents. Untuk informasi selengkapnya tentang peristiwa, lihat Peristiwa.
Nota
Kode di luar kelas, struktur, atau modul harus memenuhi syarat nama variabel anggota dengan nama kelas, struktur, atau modul tersebut. Kode di luar prosedur atau blok tidak dapat merujuk ke variabel lokal apa pun dalam prosedur atau blok tersebut.
Merilis sumber daya terkelola
Pengumpul sampah .NET Framework membuang sumber daya terkelola tanpa pengkodan tambahan di bagian Anda. Namun, Anda dapat memaksa pembuangan sumber daya terkelola alih-alih menunggu pengumpul sampah.
Jika kelas menyimpan sumber daya yang sangat berharga dan langka (seperti koneksi database atau handel file), Anda mungkin tidak ingin menunggu hingga pengumpulan sampah berikutnya untuk membersihkan instans kelas yang tidak lagi digunakan. Kelas dapat mengimplementasikan IDisposable antarmuka untuk menyediakan cara untuk melepaskan sumber daya sebelum pengumpulan sampah. Kelas yang mengimplementasikan antarmuka tersebut mengekspos Dispose metode yang dapat dipanggil untuk memaksa sumber daya berharga segera dirilis.
Pernyataan ini Using mengotomatiskan proses memperoleh sumber daya, menjalankan serangkaian pernyataan, lalu membuang sumber daya. Namun, sumber daya harus mengimplementasikan IDisposable antarmuka. Untuk informasi selengkapnya, lihat Pernyataan Using.
Contoh 1
Contoh berikut mendeklarasikan variabel dengan menggunakan Dim pernyataan dengan berbagai opsi.
' Declare and initialize a Long variable.
Dim startingAmount As Long = 500
' Declare a local variable that always retains its value,
' even after its procedure returns to the calling code.
Static totalSales As Double
' Declare a variable that refers to an array.
Dim highTemperature(31) As Integer
' Declare and initialize an array variable that
' holds four Boolean check values.
Dim checkValues() As Boolean = {False, False, True, False}
Contoh 2
Contoh berikut mencantumkan angka utama antara 1 dan 30. Cakupan variabel lokal dijelaskan dalam komentar kode.
Public Sub ListPrimes()
' The sb variable can be accessed only
' within the ListPrimes procedure.
Dim sb As New System.Text.StringBuilder()
' The number variable can be accessed only
' within the For...Next block. A different
' variable with the same name could be declared
' outside of the For...Next block.
For number As Integer = 1 To 30
If CheckIfPrime(number) = True Then
sb.Append(number.ToString & " ")
End If
Next
Debug.WriteLine(sb.ToString)
' Output: 2 3 5 7 11 13 17 19 23 29
End Sub
Private Function CheckIfPrime(ByVal number As Integer) As Boolean
If number < 2 Then
Return False
Else
' The root and highCheck variables can be accessed
' only within the Else block. Different variables
' with the same names could be declared outside of
' the Else block.
Dim root As Double = Math.Sqrt(number)
Dim highCheck As Integer = Convert.ToInt32(Math.Truncate(root))
' The div variable can be accessed only within
' the For...Next block.
For div As Integer = 2 To highCheck
If number Mod div = 0 Then
Return False
End If
Next
Return True
End If
End Function
Contoh 3
Dalam contoh berikut, speedValue variabel dideklarasikan pada tingkat kelas. Kata Private kunci digunakan untuk mendeklarasikan variabel. Variabel dapat diakses oleh prosedur apa pun di Car kelas .
' Create a new instance of a Car.
Dim theCar As New Car()
theCar.Accelerate(30)
theCar.Accelerate(20)
theCar.Accelerate(-5)
Debug.WriteLine(theCar.Speed.ToString)
' Output: 45
Public Class Car
' The speedValue variable can be accessed by
' any procedure in the Car class.
Private speedValue As Integer = 0
Public ReadOnly Property Speed() As Integer
Get
Return speedValue
End Get
End Property
Public Sub Accelerate(ByVal speedIncrease As Integer)
speedValue += speedIncrease
End Sub
End Class
Lihat juga
- Pernyataan Const
- Pernyataan Redim
- Pernyataan Eksplisit Opsi
- Pernyataan Option Infer
- Pernyataan Ketat Opsi
- Halaman Kompilasi, Perancang Proyek (Visual Basic)
- Deklarasi Variabel
- Array
- Penginisialisasi Objek: Jenis Bernama dan Anonim
- Jenis Anonim
- Penginisialisasi Objek: Jenis Bernama dan Anonim
- Cara: Mendeklarasikan Objek dengan Menggunakan Penginisialisasi Objek
- Inferensi Jenis Lokal