Užitočný všeobecný zoznam vo VB.NET

click fraud protection

Generici rozširujú výkon a flexibilitu VB.NET v mnohých oblastiach, ale vo všeobecnej generácii získate väčší úžitok z výkonu a viac možností programovania. zoznam objekt [Zoznam (z T)] ako s akýmkoľvek iným.

Použit Zoznam (z T), musíte pochopiť, ako implementovať mnoho metód, ktoré poskytuje .NET Framework. Nižšie sú uvedené tri príklady použitia Pre každý, findalla druh, ktorý ukazuje, ako všeobecné zoznam triedy práce.

Prvým krokom je vytvorenie generika zoznam. Údaje môžete získať mnohými spôsobmi, ale najjednoduchšie je spravodlivé pridať ono. Nasledujúci kód ukazuje, ako klasifikovať moju zbierku piva a vína!

Štartovací kód

Najprv musí existovať predmet, ktorý bude predstavovať fľašu zo zbierky. V aplikácii Windows Forms musí byť trieda Form najprv v súbore, alebo návrhár Visual Studio nebude správne fungovať, takže to vložte na koniec:

Fľaša verejnej triedy. Verejná značka ako reťazec. Verejné meno ako reťazec. Verejná kategória ako reťazec. Verejná veľkosť ako desatinné miesto. Public Sub New (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_Category As String, _. ByVal m_Size As Decimal) Značka = m_Brand. Meno = m_Name. Kategória = m_Kategória. Veľkosť = m_Size. End Sub. Koncová trieda
instagram viewer

Ak chcete zostaviť kolekciu, pridať položiek. To je to, čo je v Načítanie formulára udalosť:

Dim Cabinet As List (Of Bottle) = _. „Nový zoznam (z fľaše) Cabinet. Pridať (nová fľaša (_. "Castle Creek", _. "Uintah Blanc", _. „Víno“, 750)) Cabinet. Pridať (nová fľaša (_. "Zion Canyon Brewing Company", _. "Springdale Amber Ale", _. „Pivo“, 355)) Cabinet. Pridať (nová fľaša (_. "Spanish Valley Vineyards", _. "Syrah", _. „Víno“, 750)) Cabinet. Pridať (nová fľaša (_. "Wasatch Beers", _. "Polygamy Porter", _. „Pivo“, 355)) Cabinet. Pridať (nová fľaša (_. "Squatters Beer", _. "Provo Girl Pilsner", _. „Pivo“, 355))

Všetky vyššie uvedené kódy sú štandardnými kódmi vo VB.NET 1.0. Všimnite si však, že definovaním svojej vlastnej fľaša Ak získate objekt, získate výhody viacerých typov v rovnakej kolekcii (v tomto prípade obidvoch) povrázok a desatinný) a účinný typ „oneskorená väzba“.

Každý príklad

Zábava sa začína, keď použijeme metódy. Začneme implementáciou známeho Pre každý metóda. Dokumentácia spoločnosti Microsoft obsahuje túto definíciu syntaxe použitia:

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

Microsoft ďalej definuje akčné ako „delegovať na metódu, ktorá vykonáva akciu s objektom, ktorý mu bol odovzdaný. Prvky súčasného zoznamu (T) sa jednotlivo odovzdajú delegátovi akcie (T). ““

Tip: Ďalšie informácie o delegátoch nájdete na stránke Použitie delegátov v jazyku Visual Basic .NET pre flexibilitu za behu.

Prvá vec, ktorú musíte kódovať, je metóda, ktorá bude delegovaná. Nepochopenie tohto jedného kľúčového bodu je zdrojom väčšina zámeny študentov VB.NET. Táto funkcia alebo podprogram je miestom, kde sa vykonáva všetky prispôsobené kódovanie pre objekty typu „Of“.

Pri správnom výkone ste v podstate hotoví. V tomto prvom príklade je to naozaj jednoduché. Celá inštancia fľaša prechádza a podprogram z neho vyberie všetko potrebné. Kódovanie Pre každý sám o sebe je tiež jednoduchý. Stačí vyplniť adresu delegáta pomocou AddressOf metóda.

Sub displayBottle (ByVal b As Bottle) ResultList. Položky. Pridať (_ b. Značka & "-" & _ b. Meno & "-" & _ b. Kategória & "-" & _ b. Veľkosť) End Sub Private Sub ForEachButton_Click (... ResultList. Položky. Vymazať () ResultList. Položky. Pridajte („Pre každý príklad“) ResultList. Položky. Pridajte ("") skrinku. ForEach (AddressOf displayBottle) End Sub

Nájdite príklad

findall je trochu komplikovanejšia. Dokumentácia spoločnosti Microsoft pre findall vyzerá takto:

Dim inštancia ako zoznam Dim zhoda ako predikát (z T) Dim returnValue ako zoznam (z T) returnValue = instance. FindAll (match)

Táto syntax obsahuje nový prvok, Predikát (z T). Podľa spoločnosti Microsoft to bude predstavovať metódu ", ktorá definuje súbor kritérií a určuje, či zadaný objekt tieto kritériá spĺňa. "Inými slovami, môžete vytvoriť akýkoľvek kód, ktorý nájde niečo v Zoznam. Zakódoval som svoje Predikát (z T) nájsť niečo v „Pive“ kategórie.

Namiesto toho, aby ste pre každú položku v zozname zavolali delegovaný kód, findall vráti celok Zoznam (T) obsahujúce iba zhody, ktoré sú výsledkom vášho Predikát (z T). Túto sekundu je potrebné definovať podľa vášho kódu Zoznam (T) a s tým niečo urobiť. Môj kód len pridá položky do listbox.

Private Sub FindAllButton_Click (odosielateľ ByVal ako systém. Object, ByVal e As System. EventArgs) spracováva FindAllButton. Kliknite na Zoznam výsledkov. Položky. Vymazať () ResultList. Položky. Pridajte („FindAll Example“) ResultList. Položky. Pridať ("") dim subublist ako zoznam (z fľaše) subublist = Cabinet. FindAll (AddressOf findBeer) pre každé r ako fľaša v subliste ResultList. Položky. Pridať (_ r. Značka & "-" & _ r. Meno & "-" & _ r. Kategória & "-" & _ r. Veľkosť) Ďalší koniec Sub Funkcia findBeer (ByVal b ako fľaša) _ Ako booleovský If (b. Kategória = „Pivo“) Potom vráťte skutočný ďalší návrat falošného konca, ak funkcia ukončenia funguje

Zoradiť príklad

Poslednou metódou, ktorú tento článok skúma, je druh. Spoločnosť Microsoft opäť používa určitú terminológiu, ktorú nemusíte poznať. V skutočnosti existujú štyri rôzne preťaženia druh metóda:

  • Druh ()
  • Zoradiť (IComparer (T))
  • Zoradiť (porovnanie (T))
  • Zoradiť (Int32, Int32, IComparer (T))

To vám umožní používať metódy triedenia definované v .NET Framework pre zoznam, kódovať vlastné, používať systém definované porovnanie pre typ alebo triedenie časti zbierky pomocou východiskovej polohy a počtu parameter.

V tomto príklade, pretože používam nasledujúcu syntax na skutočné vykonanie zoradenia, používam tretie preťaženie.

X. Name.x. Názov. PorovnaťTo (r. Názov) (y. Názov)

Kódoval som iného delegáta do môjho vlastného porovnávača. Pretože chcem triediť podľa môjho názov, Vytiahnem práve tú hodnotu z každej inštancie fľaša objekt, ktorý je odovzdaný a použiť Zoradiť (porovnanie )>)). druh metóda skutočne mení usporiadanie originálu Zoznam (T). To sa spracováva po vykonaní metódy.

Private Sub SortButton_Click (odosielateľ ByVal ako systém. Object, ByVal e As System. EventArgs) Rukoväte SortButton. Kliknite na Zoznam výsledkov. Položky. Vymazať () ResultList. Položky. Pridať („Zoradiť príklad“) Zoznam výsledkov. Položky. Pridajte ("") skrinku. Zoradiť (AddressOf sortCabinet) pre každé r ako fľašu v zozname výsledkov kabinetu. Položky. Pridať (_ r. Meno & "-" & _ r. Značka & "-" & _ r. Kategória & "-" & _ r. Veľkosť) Ďalší koniec Sub Súkromne zdieľané funkcie sortCabinet (_ ByVal x ako fľaša, ByVal y ako fľaša) ako celé číslo x. Názov. PorovnaťTo (r. Názov) Konečná funkcia

Tieto metódy boli vybrané, aby demonštrovali hlavné spôsoby, ktorými sa rámcové metódy používajú v roku 2007 Zoznam (T) sú v skutočnosti kódované. Existuje však celý rad ďalších metód. To je to, čo robí Zoznam (T) tak užitočné!

instagram story viewer