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.
Penginisialisasi koleksi menyediakan sintaks yang dipersingkat yang memungkinkan Anda membuat koleksi dan mengisinya dengan sekumpulan nilai awal. Penginisialisasi koleksi berguna saat Anda membuat koleksi dari sekumpulan nilai yang diketahui, misalnya, daftar opsi atau kategori menu, sekumpulan nilai numerik awal, daftar statis string seperti nama hari atau bulan, atau lokasi geografis seperti daftar status yang digunakan untuk validasi.
Untuk informasi selengkapnya tentang koleksi, lihat Koleksi.
Anda mengidentifikasi penginisialisasi koleksi dengan menggunakan From kata kunci diikuti dengan kurung kurawal ({}). Ini mirip dengan sintaksis literal array yang dijelaskan dalam Array. Contoh berikut menunjukkan berbagai cara untuk menggunakan penginisialisasi koleksi untuk membuat koleksi.
' Create an array of type String().
Dim winterMonths = {"December", "January", "February"}
' Create an array of type Integer()
Dim numbers = {1, 2, 3, 4, 5}
' Create a list of menu options. (Requires an extension method
' named Add for List(Of MenuOption)
Dim menuOptions = New List(Of MenuOption) From {{1, "Home"},
{2, "Products"},
{3, "News"},
{4, "Contact Us"}}
Nota
C# juga menyediakan penginisialisasi koleksi. Penginisialisasi koleksi C# menyediakan fungsionalitas yang sama dengan penginisialisasi koleksi Visual Basic. Untuk informasi selengkapnya tentang penginisialisasi koleksi C#, lihat Penginisialisasi Objek dan Koleksi.
Sintaksis
Penginisialisasi koleksi terdiri dari daftar nilai yang dipisahkan koma yang diapit kurung kurawal ({}), yang didahului oleh From kata kunci, seperti yang ditunjukkan dalam kode berikut.
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}
Saat Anda membuat koleksi, seperti List<T> atau Dictionary<TKey,TValue>, Anda harus menyediakan jenis koleksi sebelum penginisialisasi koleksi, seperti yang ditunjukkan dalam kode berikut.
Public Class AppMenu
Public Property Items As List(Of String) =
New List(Of String) From {"Home", "About", "Contact"}
End Class
Nota
Anda tidak dapat menggabungkan penginisialisasi koleksi dan penginisialisasi objek untuk menginisialisasi objek koleksi yang sama. Anda dapat menggunakan penginisialisasi objek untuk menginisialisasi objek di dalam penginisialisasi koleksi.
Membuat Koleksi dengan Menggunakan Penginisialisasi Koleksi
Saat Anda membuat koleksi dengan menggunakan penginisialisasi koleksi, setiap nilai yang disediakan dalam penginisialisasi koleksi diteruskan ke metode koleksi yang sesuai Add . Misalnya, jika Anda membuat List<T> dengan menggunakan penginisialisasi koleksi, setiap nilai string dalam penginisialisasi koleksi diteruskan ke Add metode . Jika Anda ingin membuat koleksi dengan menggunakan penginisialisasi koleksi, jenis yang ditentukan harus merupakan jenis koleksi yang valid. Contoh jenis koleksi yang valid termasuk kelas yang mengimplementasikan IEnumerable<T> antarmuka atau mewarisi CollectionBase kelas. Jenis yang ditentukan juga harus menyediakan metode Add yang memenuhi kriteria berikut.
Metode
Addharus tersedia dari cakupan di mana penginisialisasi koleksi sedang dipanggil. MetodeAddini tidak harus bersifat publik jika Anda menggunakan penginisialisasi koleksi dalam skenario di mana metode non-publik koleksi dapat diakses.Metode
Addharus menjadi anggota instans atauSharedanggota kelas koleksi, atau metode ekstensi.Metode
Addharus ada yang dapat dicocokkan, berdasarkan aturan resolusi kelebihan beban, ke jenis yang disediakan dalam penginisialisasi koleksi.
Misalnya, contoh kode berikut menunjukkan cara membuat List(Of Customer) koleksi dengan menggunakan penginisialisasi koleksi. Saat kode dijalankan, setiap Customer objek diteruskan ke Add(Customer) metode daftar generik.
Dim customers = New List(Of Customer) From
{
New Customer("City Power & Light", "http://www.cpandl.com/"),
New Customer("Wide World Importers", "http://www.wideworldimporters.com/"),
New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/")
}
Contoh kode berikut menunjukkan kode yang setara yang tidak menggunakan penginisialisasi koleksi.
Dim customers = New List(Of Customer)
customers.Add(New Customer("City Power & Light", "http://www.cpandl.com/"))
customers.Add(New Customer("Wide World Importers", "http://www.wideworldimporters.com/"))
customers.Add(New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/"))
Jika koleksi memiliki metode Add yang parameter-parameter ini cocok dengan konstruktor dari objek Customer, Anda dapat menempatkan nilai parameter untuk metode Add dalam penginisialisasi koleksi, yang akan dibahas di bagian berikutnya. Jika koleksi tidak memiliki metode seperti Add itu, Anda dapat membuatnya sebagai metode ekstensi. Untuk contoh cara membuat metode Add sebagai metode ekstensi untuk suatu koleksi, lihat Cara: Membuat Metode Ekstensi Tambah yang Digunakan oleh Penginisialisasi Koleksi. Untuk contoh cara membuat koleksi kustom yang dapat digunakan dengan penginisialisasi koleksi, lihat Cara: Membuat Koleksi yang Digunakan oleh Penginisialisasi Koleksi.
Penginisialisasi Koleksi Berlapis
Anda dapat menumpuk nilai dalam penginisialisasi koleksi untuk mengidentifikasi kelebihan metode Add tertentu untuk koleksi yang sedang dibuat. Nilai yang diteruskan ke metode Add harus dipisahkan oleh koma dan dibungkus dalam kurung kurawal ({}), seperti saat Anda melakukannya dalam array literal atau inisialisasi koleksi.
Saat Anda membuat koleksi dengan menggunakan nilai berlapis, setiap elemen daftar nilai berlapis diteruskan sebagai argumen ke Add metode yang cocok dengan jenis elemen. Misalnya, contoh kode berikut membuat Dictionary<TKey,TValue> di mana kunci berjenis Integer dan nilainya berjenis String. Setiap daftar nilai yang terstruktur dicocokkan dengan metode Add untuk Dictionary.
Dim days = New Dictionary(Of Integer, String) From
{{0, "Sunday"}, {1, "Monday"}}
Contoh kode sebelumnya setara dengan kode berikut.
Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")
Hanya daftar nilai yang bersarang di tingkat pertama yang dikirim ke metode Add untuk jenis koleksi. Tingkat bersarang yang lebih dalam diperlakukan sebagai literal array dan daftar nilai berlapis tidak cocok dengan Add metode koleksi apa pun.
Topik Terkait
| Judul | Deskripsi |
|---|---|
| Cara: Membuat Metode Tambahkan Ekstensi yang Digunakan oleh Penginisialisasi Koleksi | Memperlihatkan cara membuat metode ekstensi yang disebut Add yang dapat digunakan untuk mengisi koleksi dengan nilai dari penginisialisasi koleksi. |
| Cara: Membuat Koleksi yang Digunakan oleh Penginisialisasi Koleksi | Menunjukkan cara mengaktifkan penggunaan penginisialisasi koleksi dengan menyertakan Add metode di kelas koleksi yang mengimplementasikan IEnumerable. |