VB.NET'te Yararlı Genel Liste

click fraud protection

Jenerikler VB.NET'in gücünü ve esnekliğini birçok alanda genişletir, ancak genel olarak daha büyük bir performans avantajı ve daha fazla programlama seçeneği elde edersiniz Liste nesne [Liste (T)] diğerlerinden daha fazla.

Kullanmak Liste (T), .NET Framework'ün sağladığı birçok yöntemi nasıl uygulayacağınızı anlamalısınız. Aşağıda aşağıdakileri kullanan üç örnek verilmiştir: Her biri için, Hepsini bul, ve Çeşit, bu nasıl genel Liste sınıf çalışmaları.

İlk adım genel bir Liste. Verileri birçok şekilde alabilirsiniz, ancak en basit olanı Ekle o. Aşağıdaki kod bira ve şarap koleksiyonumu nasıl sınıflandıracağımı gösterir!

Başlangıç ​​Kodu

İlk olarak koleksiyondan bir şişeyi temsil edecek bir nesne olmalı. Windows Forms uygulamasında, Form sınıfının önce bir dosyada olması gerekir, aksi takdirde Visual Studio tasarımcısı düzgün çalışmaz, bu yüzden bunu sonuna ekleyin:

Genel Sınıf Şişe. Dize Olarak Genel Marka. Genel Ad Olarak Dize. Genel Kategori Dize Olarak. Ondalık Olarak Genel Boyut. Genel Alt Yeni (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_Category As String, _. ByVal m_Size On Decimal) Marka = m_Brand. Adı = m_Adı. Kategori = m_Kategori. Boyut = m_Size. End Sub. Bitiş Sınıfı
instagram viewer

Koleksiyonu oluşturmak için, Ekle nesneler. İçinde ne var Form Yükü Etkinlik:

Liste Olarak Dim Kabin (Şişenin) = _. "Yeni Liste (Şişeden) Kabine. Ekle (Yeni Şişe (_. "Castle Creek", _. "Uintah Blanc", _. "Şarap", 750)) Kabine. Ekle (Yeni Şişe (_. "Zion Canyon Bira Fabrikası", _. "Springdale Amber Ale", _. "Bira", 355)) Kabine. Ekle (Yeni Şişe (_. "İspanyol Vadisi Üzüm Bağları", _. "Syrah", _. "Şarap", 750)) Kabine. Ekle (Yeni Şişe (_. "Wasatch Beer", _. "Çok eşlilik Porter", _. "Bira", 355)) Kabine. Ekle (Yeni Şişe (_. "Gecekondu Bira", _. "Provo Girl Pilsner", _. "Bira", 355))

Yukarıdaki kod VB.NET 1.0 standart kodudur. Ancak, kendiniz tanımlayarak Şişe nesnesi, aynı koleksiyondaki birden çok türün avantajlarından yararlanırsınız (bu durumda, her ikisi de sicim ve Ondalık) ve verimli, güvenli tip "geç bağlama".

ForEach Örnek

Eğlence yöntemleri kullandığımızda başlar. Başlamak için, tanıdıkları uygulayalım Her biri için yöntem. Microsoft belgeleri bu kullanım sözdizimi tanımını içerir:

Dim örneği Olarak Liste Dim eylemi Eylem Olarak (T) örneği. ForEach (eylem)

Microsoft ayrıca aksiyon "kendisine iletilen nesne üzerinde eylem gerçekleştiren bir yönteme delege edin. Geçerli Liste'nin (T) öğeleri ayrı ayrı Eylem (T) temsilcisine aktarılır. "

İpucu: Delegeler hakkında daha fazla bilgi için okuyun Çalışma Zamanı Esnekliği için Visual Basic .NET'te Temsilciler Kullanma.

Kodlamanız gereken ilk şey, devredilecek yöntemdir. Bu önemli noktayı yanlış anlamak, çoğu VB.NET öğrencilerinin kafa karışıklığı. Bu işlev veya altyordam, "Of" tipi nesneler için tüm özelleştirilmiş kodlamanın yapıldığı yerdir.

Doğru şekilde gerçekleştirildiğinde, işiniz bitti demektir. Bu ilk örnekte gerçekten basit. Tüm örneği Şişe aktarılır ve altyordam bunun dışında gereken her şeyi seçer. Kodlama Her biri için kendisi de basit. Sadece delegenin adresini Adresi yöntem.

Alt ekranŞişe (Şişe Olarak ByVal b) Sonuç Listesi. Öğeler. Ekle (_ b. Marka & "-" & _ b. Adı & "-" & _ b. Kategori & "-" & _ b. Boyut) End Sub Private Sub ForEachButton_Click (... ResultList. Öğeler. Clear () ResultList. Öğeler. ("Her Örnek İçin") Sonuç Listesini ekleyin. Öğeler. ("") Kabine ekleyin. ForEach (displayOf displayBottle) End Sub

FindAll Örnek

Hepsini bul biraz daha karmaşıktır. İçin Microsoft belgeleri Hepsini bul buna benzer:

Liste olarak Dim Dim Dim Predicate (Of T) olarak eşleşir Dim returnValue List (Of T) olarak return returnValue = örneği. Tümü (eşleşme) bul

Bu sözdizimi yeni bir öğe içerir, Tahmin (Of T). Microsoft'a göre bu, "bir dizi ölçütü tanımlayan ve Belirtilen nesne bu ölçütleri karşılıyor. "Başka bir deyişle, öğede bir şey bulabilecek herhangi bir kod oluşturabilirsiniz. liste. Kodladım Tahmin (Of T) "Bira" bir şey bulmak için Kategori.

Listedeki her bir öğe için delege kodunu çağırmak yerine, Hepsini bul bir bütün döndürür Liste (T) yalnızca sizin Tahmin (Of T). Bu saniyeyi tanımlamak sizin kodunuza kalmıştır Liste (T) ve onunla bir şeyler yapın. Kodum yalnızca öğeleri bir Liste kutusu.

Özel Alt FindAllButton_Click (ByVal gönderici As Sistemi. Sistem Olarak Nesne, ByVal e. EventArgs) FindAllButton öğelerini işler. Sonuç Listesi'ni tıklayın. Öğeler. Clear () ResultList. Öğeler. ("FindAll Örnek") ResultList ekleyin. Öğeler. ("") Alt listeyi Liste Olarak (Şişenin) alt listesi = Dolap ekleyin. ResultList alt listesinde Her r As Şişesi için FindAll (AddressOf findBeer). Öğeler. Ekle (_ r. Marka & "-" & _ r. Adı & "-" & _ r. Kategori & "-" & _ r. Boyut) Sonraki Son Alt İşlev findBeer (Şişe Olarak ByVal b) _ Boolean Olarak (b. Category = "Beer") Sonra Son İşlevi Gerçek Başka Geri Dön Yanlış

Sıralama Örneği

Bu makalenin incelediği son yöntem Çeşit. Microsoft yine aşina olmadığınız bir terminoloji kullanıyor. Aslında dört farklı aşırı yükleme var Çeşit yöntem:

  • Çeşit()
  • Sırala (IComparer (T))
  • Sırala (Karşılaştırma (T))
  • Sırala (Int32, Int32, IComparer (T))

Bu, liste için .NET Framework'te tanımlanan sıralama yöntemlerini kullanmanıza, kendi kodunuzu yazmanıza, bir sistem kullanmanıza olanak tanır başlangıç ​​konumu ve sayısı kullanarak koleksiyonun türü veya sıralama bölümü için tanımlanmış karşılaştırma parametre.

Bu örnekte, sıralamayı gerçekleştirmek için aşağıdaki sözdizimini kullandığımdan, üçüncü aşırı yükü kullanıyorum.

x. Name.x. Adı. Karşılaştır (y. Adı) (y. Ad)

Kendi karşılaştırıcım için başka bir delege kodladım. Göre sıralamak istediğim için ad, Sadece bu değeri, Şişe iletilen nesne ve Sırala (Karşılaştırma )>)). Çeşit yöntemi aslında orijinali yeniden düzenler Liste (T). Yöntem yürütüldükten sonra işlenen budur.

Özel Alt SortButton_Click (ByVal gönderici As Sistemi. Sistem Olarak Nesne, ByVal e. EventArgs) SortButton öğesini işler. Sonuç Listesi'ni tıklayın. Öğeler. Clear () ResultList. Öğeler. ("Örneği Sırala") ResultList. Öğeler. ("") Kabine ekleyin. Her r için Kabine Sonuç Listesindeki Şişe Olarak Sırala (AddressOf sortCabinet). Öğeler. Ekle (_ r. Adı & "-" & _ r. Marka & "-" & _ r. Kategori & "-" & _ r. Boyut) Sonraki Son Sub Özel Paylaşılan İşlev sortCabinet (_ ByVal x Şişe Olarak, Şişe Olarak ByVal y Şişe Olarak) Tamsayı Olarak Dönüş x. Adı. Karşılaştır (y. Adı) Son İşlev

Bu yöntemler, Framework yöntemlerinin Liste (T) kodlanmıştır. Ancak, diğer yöntemlerin bir sürü var. Bunu yapan Liste (T) çok kullanışlı!

instagram story viewer