Daftar Generik yang Berguna di VB.NET

Generik memperluas kekuatan dan fleksibilitas VB.NET di banyak bidang, tetapi Anda mendapatkan manfaat kinerja yang lebih besar dan lebih banyak opsi pemrograman dalam generik Daftar objek [Daftar (dari t)] dibandingkan dengan yang lain.

Menggunakan Daftar (dari t), Anda harus memahami cara menerapkan banyak metode yang disediakan oleh .NET Framework. Di bawah ini adalah tiga contoh penggunaan Untuk setiap, Temukan semua, dan Menyortir, yang menunjukkan bagaimana obat generik Daftar karya kelas.

Langkah pertama adalah membuat generik Daftar. Anda bisa mendapatkan data dalam banyak cara, tetapi yang paling sederhana adalah dengan adil Menambahkan Itu. Kode di bawah ini menunjukkan cara mengklasifikasikan koleksi bir dan anggur saya!

Kode Awal

Pertama-tama perlu ada objek yang akan mewakili botol dari koleksi. Dalam aplikasi Windows Forms, kelas Form harus terlebih dahulu dalam file atau desainer Visual Studio tidak akan berfungsi dengan benar, jadi letakkan ini di akhir:

Botol Kelas Publik. Merek Publik Sebagai Tali. Nama Publik Sebagai Tali. Kategori Publik Sebagai Tali. Ukuran Publik Sebagai Desimal. Sub Publik Baru (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_Category As String, _. ByVal m_Size As Decimal) Merek = m_Brand. Nama = m_Name. Category = m_Category. Ukuran = m_Size. End Sub. Kelas Akhir
instagram viewer

Untuk membangun koleksi, Menambahkan barang-barang. Inilah yang ada di dalam Bentuk beban peristiwa:

Dim Kabinet As List (Dari Botol) = _. "Daftar Baru (Dari Botol) Kabinet. Tambahkan (Botol Baru (_. "Castle Creek", _. "Uintah Blanc", _. "Anggur", 750)) Kabinet. Tambahkan (Botol Baru (_. "Perusahaan Pembuatan Bir Sion Canyon", _. "Springdale Amber Ale", _. "Bir", 355)) Kabinet. Tambahkan (Botol Baru (_. "Kebun Anggur Lembah Spanyol", _. "Syrah", _. "Anggur", 750)) Kabinet. Tambahkan (Botol Baru (_. "Wasatch Beers", _. "Poligami Porter", _. "Bir", 355)) Kabinet. Tambahkan (Botol Baru (_. "Bir Liar", _. "Provo Girl Pilsner", _. "Bir", 355))

Semua kode di atas adalah kode standar di VB.NET 1.0. Namun, perhatikan bahwa dengan mendefinisikan milik Anda Botol objek, Anda mendapatkan manfaat dari beberapa jenis dalam koleksi yang sama (dalam hal ini, keduanya Tali dan Desimal) dan efisien, tipe aman "mengikat terlambat."

Contoh ForEach

Kesenangan dimulai ketika kita menggunakan metode. Untuk memulai, mari kita terapkan yang akrab Untuk setiap metode. Dokumentasi Microsoft menyertakan definisi sintaksis penggunaan ini:

Dim instance As List Dim action as Action (Of T) instance. ForEach (tindakan)

Microsoft lebih lanjut mendefinisikan tindakan sebagai "mendelegasikan ke metode yang melakukan tindakan pada objek yang diteruskan ke itu. Elemen-elemen Daftar saat ini (T) secara individual diteruskan ke delegasi Aksi (T). "

Tip: Untuk informasi lebih lanjut tentang delegasi, baca Menggunakan Delegasi dalam Visual Basic .NET untuk Fleksibilitas Runtime.

Hal pertama yang Anda perlu kode adalah metode yang akan didelegasikan. Kesalahpahaman satu titik kunci ini adalah sumber paling dari kebingungan siswa VB.NET. Fungsi ini, atau subrutin, adalah tempat semua pengkodean khusus untuk objek tipe "Of" dilakukan.

Ketika dilakukan dengan benar, pada dasarnya Anda sudah selesai. Sangat sederhana dalam contoh pertama ini. Seluruh contoh dari Botol dilewatkan dan subrutin memilih apapun yang diperlukan darinya. Pengodean Untuk setiap itu sendiri juga sederhana. Cukup isi alamat delegasi menggunakan AddressOf metode.

Sub displayBotol (ByVal b As Bottle) ResultList. Item. Tambahkan (_ b. Merek & "-" & _ b. Nama & "-" & _ b. Kategori & "-" & _ b. Ukuran) End Sub Private Sub ForEachButton_Click (... Daftar Hasil. Item. Hapus () Daftar Hasil. Item. Tambahkan ("Untuk Setiap Contoh") ResultList. Item. Tambahkan ("") Kabinet. ForEach (AddressOf displayBottle) End Sub

Temukan Semua Contoh

Temukan semua sedikit lebih rumit. Dokumentasi Microsoft untuk Temukan semua terlihat seperti ini:

Dim instance As List Dim match as Predicate (Of T) Dim returnValue Sebagai List (Of T) returnValue = instance. Temukan Semua (cocok)

Sintaks ini mencakup elemen baru, Predikat (Of T). Menurut Microsoft, ini akan mewakili metode "yang mendefinisikan seperangkat kriteria dan menentukan apakah objek tertentu memenuhi kriteria tersebut. "Dengan kata lain, Anda dapat membuat kode apa pun yang akan menemukan sesuatu di daftar. Saya memberi kode Predikat (Of T) untuk menemukan apa pun di "Bir" Kategori.

Alih-alih memanggil kode delegasi untuk setiap item dalam daftar, Temukan semua mengembalikan keseluruhan Daftar (t) hanya berisi kecocokan yang dihasilkan dari Anda Predikat (Of T). Terserah kode Anda untuk menentukan kedua ini Daftar (t) dan melakukan sesuatu dengannya. Kode saya hanya menambahkan item ke a Kotak daftar.

Sub Pribadi FindAllButton_Click (ByVal sender As System. Objek, ByVal e Sebagai Sistem. EventArgs) Menangani FindAllButton. Klik Daftar Hasil. Item. Hapus () Daftar Hasil. Item. Tambahkan ("FindAll Example") ResultList. Item. Tambahkan ("") Sublist Dim As List (Of Bottle) sublist = Kabinet. FindAll (AddressOf findBeer) Untuk Setiap Botol Sebagai Sublist, ListList. Item. Tambahkan (_ r. Merk & "-" & _ r. Nama & "-" & _ r. Kategori & "-" & _ r. Size) Next End Sub Function findBeer (ByVal b As Bottle) _ As Boolean If (b. Category = "Beer") Kemudian Return True Else Return False End If End Function

Sortir Contoh

Metode terakhir yang dibahas dalam artikel ini adalah Menyortir. Sekali lagi, Microsoft menggunakan beberapa terminologi yang mungkin tidak Anda kenal. Sebenarnya ada empat kelebihan yang berbeda Menyortir metode:

  • Menyortir()
  • Sortir (IComparer (T))
  • Sortir (Perbandingan (T))
  • Sortir (Int32, Int32, IComparer (T))

Ini memungkinkan Anda menggunakan metode pengurutan yang didefinisikan dalam .NET Framework untuk daftar, kode Anda sendiri, gunakan sistem perbandingan yang ditentukan untuk jenis, atau mengurutkan bagian dari koleksi menggunakan posisi awal dan jumlah parameter.

Dalam contoh ini, karena saya menggunakan sintaks berikut untuk benar-benar melakukan pengurutan, saya menggunakan kelebihan ketiga.

x. Name.x. Nama. Bandingkan dengan (y. Nama) (y. Nama)

Saya telah memberi kode delegasi lain ke pembanding saya sendiri. Karena saya ingin mengurutkan berdasarkan Nama, Saya hanya menarik nilai itu dari setiap instance dari Botol objek yang dilewatkan dan menggunakan Sortir (Perbandingan )>))). Itu Menyortir Metode sebenarnya mengatur ulang yang asli Daftar (t). Itulah yang diproses setelah metode dieksekusi.

Sub Pribadi SortButton_Click (Pengirim ByVal Sebagai Sistem. Objek, ByVal e Sebagai Sistem. EventArgs) Menangani Sortir Tombol. Klik Daftar Hasil. Item. Hapus () Daftar Hasil. Item. Tambahkan ("Sortir Contoh") Daftar Hasil. Item. Tambahkan ("") Kabinet. Sortir (AddressOf sortCabinet) Untuk Setiap Botol Sebagai Dalam Hasil Kabinet. Item. Tambahkan (_ r. Nama & "-" & _ r. Merk & "-" & _ r. Kategori & "-" & _ r. Ukuran) Next End Sub Fungsi Bersama Pribadi sortCabinet (_ ByVal x As Bottle, ByVal y As Bottle) Sebagai Integer Return x. Nama. Bandingkan dengan (y. Nama) Fungsi Akhir

Metode-metode ini dipilih untuk menunjukkan cara-cara utama yang digunakan metode Kerangka Daftar (t) sebenarnya dikodekan. Namun, ada banyak metode lain. Itu yang membuatnya Daftar (t) sangat berguna!

instagram story viewer