Generiki povečujejo moč in fleksibilnost VB.NET-a na številnih področjih, vendar dobite večjo koristnost delovanja in več možnosti programiranja na splošno Seznam predmet [Seznam (od T)] kot pri drugih.
Uporabiti Seznam (od T), morate razumeti, kako implementirati številne metode, ki jih ponuja .NET Framework. Spodaj so trije primeri uporabe Za vsakogar, Najdi vse, in Razvrsti, kar prikazuje, kako generično Seznam razredna dela.
Prvi korak je ustvariti generično Seznam. Podatke lahko dobite na več načinov, najpreprostejši pa je pravičen Dodaj to. Spodnja koda prikazuje, kako razvrstiti svojo kolekcijo piva in vina!
Začetna koda
Najprej mora biti predmet, ki bo predstavljal steklenico iz zbirke. V aplikaciji Windows Forms mora biti razred obrazca najprej v datoteki ali oblikovalec Visual Studio ne bo deloval pravilno, zato to postavite na koncu:
Steklenica za javni razred Javna znamka kot struna. Javno ime kot niz Javna kategorija kot niz. Javna velikost kot decimalna. Javno pod novo (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_kategorija As String, _. ByVal m_Size As Decimal) Blagovna znamka = m_Brand. Ime = m_Name. Kategorija = m_kategorija. Velikost = m_Velikost. Končni pod. Končni razred
Če želite zgraditi zbirko, Dodaj predmeti. To je tisto, kar je v Obremenitev obrazca dogodek:
Dim omarica kot seznam (iz steklenice) = _. "Nov seznam (steklenice) Kabinet. Dodaj (Nova steklenica (_. "Grajski potok", _. "Uintah Blanc", _. "Vino", 750)) Kabinet. Dodaj (Nova steklenica (_. "Pivovarna Zion Canyon", _. "Springdale Amber Ale", _. "Pivo", 355)) Kabinet. Dodaj (Nova steklenica (_. "Španski vinogradi v dolini", _. "Syrah", _. "Vino", 750)) Kabinet. Dodaj (Nova steklenica (_. "Wasatch piva", _. "Poligamni porter", _. "Pivo", 355)) Kabinet. Dodaj (Nova steklenica (_. "Squatters pivo", _. "Provo dekle Pilsner", _. "Pivo", 355))
Vsa zgornja koda je standardna koda v VB.NET 1.0. Vendar to upoštevajte tako, da določite svoje Steklenica objekta, v isti zbirki prejmete prednosti več vrst (v tem primeru obojega) Vrvica in Decimalno) in učinkovita, varna "pozna vezava".
Primer ForEach
Zabava se začne, ko uporabljamo metode. Za začetek izvedimo znano Za vsakogar metoda. Microsoftova dokumentacija vključuje to definicijo sintakse uporabe:
Dim primera Kot seznam Dim za dejanje kot dejanje (Of T). ForEach (akcija)
Microsoft nadalje določa ukrepanje kot "delegat na metodo, ki izvede dejanje na predmetu, ki mu je bil dodeljen. Elementi trenutnega seznama (T) so posamično posredovani delegatu akcije (T). "
Namig: Več o delegtih preberite Uporaba delegatov v Visual Basic .NET za fleksibilnost izvajanja.
Prva stvar, ki jo morate kodirati, je metoda, ki jo boste delegirali. Nerazumevanje te ključne točke je izvor večina zmede študentov VB.NET. S to funkcijo ali podprogrami se izvaja vse prilagojeno kodiranje objektov tipa "Of".
Ko ste pravilno izvedeni, ste v bistvu končani. V tem prvem primeru je res preprosto. Celoten primerek Steklenica je podprogram in iz njega izbere vse potrebno. Kodiranje Za vsakogar tudi sama je preprosta. Preprosto vpišite naslov delegata AddressOf metoda.
Sub prikazBottle (ByVal b kot steklenica) ResultList. Predmeti. Dodaj (_ b. Blagovna znamka & "-" & _ b. Ime & "-" & _ b. Kategorija & "-" & _ b. Velikost) End Sub Private Sub ForEachButton_Click (... ResultList. Predmeti. Počisti () ResultList. Predmeti. Dodajte ("Za vsak primer") ResultList. Predmeti. Dodaj ("") omaro. ForEach (AddressOf displayBottle) End Sub
Primer FindAll
Najdi vse je malo bolj zapleteno. Microsoftova dokumentacija za Najdi vse izgleda takole:
Dim primer kot seznam Dim se ujema kot predikat (od T) Dim returnValue As List (Of T) returnValue = primerek. Najdi vse (tekmo)
Ta skladnja vključuje nov element, Izrek (od T). Po Microsoftovem mnenju bo to predstavljalo metodo, "ki določa niz kriterijev in določa, ali določen predmet ustreza tem kriterijem. "Z drugimi besedami, lahko ustvarite katero koli kodo, ki bo našla nekaj v seznam. Kodirala sem svoje Izrek (od T) najti karkoli v "Pivu" Kategorija.
Namesto da kličete delegatno kodo za vsak element na seznamu, Najdi vse vrne celoto Seznam (T) ki vsebujejo samo ujemanje, ki je rezultat vašega Izrek (od T). Vaša koda je, da oba določita to sekundo Seznam (T) in naredite nekaj s tem. Moja koda samo doda elemente v ListBox.
Zasebni Sub FindAllButton_Click (pošiljatelj ByVal As System). Objekt, ByVal e As System. EventArgs) obravnava FindAllButton. Kliknite ResultList. Predmeti. Počisti () ResultList. Predmeti. Dodaj ("FindAll Example") ResultList. Predmeti. Dodajte ("") zatemnjen seznam kot seznam (iz steklenice) pod seznam = omarica. FindAll (AddressOf findBeer) za vsako r kot steklenico na seznamu ResultList. Predmeti. Dodaj (_ r. Blagovna znamka & "-" & _ r. Ime & "-" & _ r. Kategorija & "-" & _ r. Velikost) Naslednji konec Podfunkcija findBeer (ByVal b Kot steklenica) _ Kot Boolean If (b. Kategorija = "Pivo") Nato vrnite True Else Return False End, če konča funkcijo
Primer razvrščanja
Končna metoda, ki jo ta članek preučuje, je Razvrsti. Microsoft spet uporablja neko terminologijo, ki je morda ne poznate. Dejansko obstajajo štiri različne preobremenitve Razvrsti metoda:
- Razvrsti ()
- Razvrsti (IComparer (T))
- Razvrsti (primerjava (T))
- Razvrsti (Int32, Int32, IComparer (T))
To vam omogoča, da za seznam uporabite načine razvrščanja, opredeljene v .NET Framework, kodirate svoje, uporabite sistem določena primerjava za vrsto ali razvrstitev dela zbirke z uporabo začetnega položaja in štetja parameter.
Ker v tem primeru uporabljam naslednjo skladnjo za dejansko izvedbo razvrščanja, uporabljam tretjo preobremenitev.
x Ime.x. Ime. Primerjaj (y) Ime) (y. Ime)
Kodiral sem drugega pooblaščenca v moji primerjalnici. Ker želim razvrščati po svoje Ime, Potegnem ravno to vrednost iz vsakega primerka Steklenica predmeta, ki je posredovan in uporabite Razvrsti (Primerjava )>)). The Razvrsti metoda dejansko preuredi izvirnik Seznam (T). To je tisto, kar obdelamo po izvedbi metode.
Zasebni sub SortButton_Click (ByVal pošiljatelj kot sistem. Objekt, ByVal e As System. EventArgs) Ročaji SortButton. Kliknite ResultList. Predmeti. Počisti () ResultList. Predmeti. Dodaj ("Primer razvrščanja") ResultList. Predmeti. Dodaj ("") omaro. Razvrstite (AddressOf sortCabinet) za vsako r kot steklenico v kabinetu ResultList. Predmeti. Dodaj (_ r. Ime & "-" & _ r. Blagovna znamka & "-" & _ r. Kategorija & "-" & _ r. Velikost) Naslednji konec Pod zasebno funkcijo v skupni rabi vrstaKabinet (_ ByVal x Kot steklenica, ByVal y Kot steklenica) Kot celoten čas x. Ime. Primerjaj (y) Ime) Končna funkcija
Te metode so bile izbrane tako, da prikazujejo glavne načine, ki jih imajo okvirne metode Seznam (T) so dejansko kodirane. Vendar obstaja cela vrsta drugih metod. To je tisto, kar naredi Seznam (T) tako koristno!