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.
Merealokasi ruang penyimpanan untuk variabel array.
Sintaks
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
Generator
| Term | Definisi |
|---|---|
Preserve |
Opsional. Pengubah yang digunakan untuk mempertahankan data dalam array yang ada saat Anda mengubah ukuran hanya dimensi terakhir. |
name |
Harus diisi. Nama variabel array. Lihat Nama Elemen yang Dideklarasikan. |
boundlist |
Harus diisi. Daftar batas setiap dimensi array yang ditentukan ulang. |
Keterangan
Anda dapat menggunakan pernyataan ReDim untuk mengubah ukuran satu atau lebih dimensi array yang telah dideklarasikan. Jika Anda memiliki array besar dan Anda tidak lagi memerlukan beberapa elemennya, ReDim dapat membebaskan memori dengan mengurangi ukuran array. Di sisi lain, jika array Anda membutuhkan lebih banyak elemen, ReDim dapat menambahkannya.
Pernyataan ReDim ini hanya ditujukan untuk array. Ini tidak berlaku pada skalar (variabel yang hanya berisi satu nilai), koleksi, atau struktur. Perhatikan bahwa jika Anda mendeklarasikan variabel berjenis Array, pernyataan ReDim tidak memiliki informasi jenis yang memadai untuk membuat array baru.
Anda hanya dapat menggunakan ReDim pada tingkat prosedur. Oleh karena itu, konteks deklarasi untuk variabel harus berupa prosedur; tidak bisa berupa file sumber, namespace layanan, antarmuka, kelas, struktur, modul, atau blok. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.
Aturan
Beberapa Variabel. Anda dapat mengubah ukuran beberapa variabel array dalam pernyataan deklarasi yang sama dan menentukan bagian
namedanboundlistuntuk setiap variabel. Variabel yang jamak dipisahkan oleh koma.Batas Array. Setiap entri di
boundlistdapat menentukan batas bawah dan atas dimensi tersebut. Batas bawah selalu 0 (nol). Batas atas adalah nilai indeks tertinggi yang mungkin untuk dimensi tersebut, bukan panjang dimensi (yang merupakan batas atas ditambah satu). Indeks untuk setiap dimensi dapat bervariasi dari 0 hingga nilai batas atasnya.Jumlah dimensi di
boundlistharus cocok dengan jumlah dimensi asli (peringkat) array.Jenis Data. Pernyataan
ReDimtidak dapat mengubah jenis data variabel array atau elemennya.Inisialisasi. Pernyataan
ReDimtidak dapat memberikan nilai inisialisasi baru untuk elemen array.Peringkat. Pernyataan
ReDimtidak dapat mengubah peringkat (jumlah dimensi) array.Mengubah ukuran dengan Pertahankan. Saat menggunakan
Preserve, Anda hanya dapat mengubah ukuran dimensi terakhir array. Untuk setiap dimensi lainnya, Anda harus menentukan batas array yang ada.Misalnya, jika array Anda hanya memiliki satu dimensi, Anda dapat mengubah ukuran dimensi dan masih mempertahankan semua konten array, karena Anda mengubah dimensi terakhir dan satu-satunya dimensi. Namun, jika array Anda memiliki dua dimensi atau lebih, Anda hanya dapat mengubah ukuran dimensi terakhir jika Anda menggunakan
Preserve.Properti. Anda dapat menggunakan
ReDimpada properti yang menyimpan array nilai.
Perilaku
Penggantian Array.
ReDimmerilis array yang ada dan membuat array baru dengan peringkat yang sama. Array baru menggantikan array yang dirilis dalam variabel array.Inisialisasi tanpa Preserve. Jika Anda tidak menentukan
Preserve,ReDimmenginisialisasi elemen array baru dengan menggunakan nilai default untuk jenis datanya.Inisialisasi dengan Preserve. Jika Anda menentukan
Preserve, Visual Basic menyalin elemen dari array yang ada ke array baru.
Contoh
Contoh berikut meningkatkan ukuran dimensi terakhir array dinamis tanpa kehilangan data yang ada dalam array, lalu mengurangi ukuran dengan kehilangan data parsial. Akhirnya, ini mengurangi ukuran kembali ke nilai aslinya dan menginisialisasi ulang semua elemen array.
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
Pernyataan ini Dim membuat array baru dengan tiga dimensi. Setiap dimensi dideklarasikan dengan batas 10, sehingga indeks array untuk setiap dimensi dapat berkisar dari 0 hingga 10. Dalam diskusi berikut, tiga dimensi dirujuk sebagai lapisan, baris, dan kolom.
ReDim yang pertama membuat array baru yang menggantikan array yang ada dalam variabel intArray.
ReDim menyalin semua elemen dari array yang ada ke dalam array baru. Ini juga menambahkan 10 kolom lagi ke akhir setiap baris di setiap lapisan dan menginisialisasi elemen dalam kolom baru ini ke 0 (nilai default Integer, yang merupakan jenis elemen array).
ReDim kedua membuat array baru lain dan menyalin semua elemen yang cocok. Namun, lima kolom hilang dari akhir setiap baris di setiap lapisan. Hal ini tidak menjadi masalah jika Anda telah selesai menggunakan kolom ini. Mengurangi ukuran array besar dapat mengosongkan memori yang tidak lagi Anda butuhkan.
ReDim ketiga membuat array baru lain dan menghapus lima kolom lain dari akhir setiap baris di setiap lapisan. Kali ini tidak menyalin elemen yang ada. Pernyataan ini mengembalikan array ke ukuran aslinya. Karena pernyataan tidak menyertakan pengubah Preserve, pernyataan akan mengatur semua elemen array ke nilai default aslinya.
Untuk contoh tambahan, lihat Array.