Pernyataan ReDim (Visual Basic)
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
name
danboundlist
untuk setiap variabel. Variabel yang jamak dipisahkan oleh koma.Batas Array. Setiap entri di
boundlist
dapat 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
boundlist
harus cocok dengan jumlah dimensi asli (peringkat) array.Jenis Data. Pernyataan
ReDim
tidak dapat mengubah jenis data variabel array atau elemennya.Inisialisasi. Pernyataan
ReDim
tidak dapat memberikan nilai inisialisasi baru untuk elemen array.Peringkat. Pernyataan
ReDim
tidak 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
ReDim
pada properti yang menyimpan array nilai.
Perilaku
Penggantian Array.
ReDim
merilis 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
,ReDim
menginisialisasi 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.
Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)
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.