Generics laajentaa VB.NET: n tehoa ja joustavuutta monilla alueilla, mutta saat suuremman suorituskyvyn edun ja enemmän ohjelmointivaihtoehtoja geneerisessä Lista esine [Luettelo (T: stä)] kuin minkään muun kanssa.
Käyttää Luettelo (T: stä), sinun on ymmärrettävä, kuinka toteuttaa lukuiset .NET-kehyksen tarjoamat menetelmät. Alla on kolme esimerkkiä käyttämällä Jokaiselle, FindAllja Järjestellä, joka osoittaa kuinka geneerinen Lista luokka toimii.
Aivan ensimmäinen askel on luoda geneerinen Lista. Voit saada tietoja monilla tavoilla, mutta yksinkertaisin on vain Lisätä se. Alla oleva koodi osoittaa, kuinka luokitellaan olut- ja viinikokoelmasi!
Lähtökoodi
Ensin on oltava esine, joka edustaa pulloa kokoelmasta. Windows Forms -sovelluksessa Lomakeluokan on ensin oltava tiedostossa tai Visual Studio -suunnittelija ei toimi oikein, joten laita tämä loppuun:
Julkisen luokan pullo. Julkinen tuotemerkki merkkijonona. Julkinen nimi merkkijonona. Julkinen luokka jousena. Julkinen koko desimaalina. Julkinen osa Uusi (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_Category nimellä String, _. ByVal m_Koko desimaalina) Tuotemerkki = m_Brand. Nimi = m_Name. Luokka = m_luokka. Koko = m_koko. End Sub. Loppu luokka
Voit rakentaa kokoelman Lisätä tavarat. Tämä on mitä Lomakekuorma tapahtuma:
Himmeä kaappi luettelona (pullosta) = _. "Uusi luettelo (pullosta) Kaappi. Lisää (Uusi pullo (_. "Castle Creek", _. "Uintah Blanc", _. "Viini", 750)) Kaappi. Lisää (Uusi pullo (_. "Zion Canyon -panimoyhtiö", _. "Springdale Amber Ale", _. "Olut", 355)) Kaappi. Lisää (Uusi pullo (_. "Espanjan laakson viinitarhat", _. "Syrah", _. "Viini", 750)) Kaappi. Lisää (Uusi pullo (_. "Wasatch-oluet", _. "Polygamy Porter", _. "Olut", 355)) Kaappi. Lisää (Uusi pullo (_. "Squatters Beer", _. "Provo Girl Pilsner", _. "Olut", 355))
Kaikki yllä oleva koodi on VB.NET 1.0: n vakiokoodi. Huomaa kuitenkin, että määrittelemällä oma Pullo objekti, saat useiden tyyppien edut samassa kokoelmassa (tässä tapauksessa molemmat jono ja desimaalin) ja tehokas, tyypilturvallinen "myöhäinen sidonta".
Jokaisesta esimerkistä
Hauska alkaa, kun käytämme menetelmiä. Aluksi toteutetaan tuttu Jokaiselle menetelmä. Microsoftin dokumentaatio sisältää tämän käytön syntaksimääritelmän:
Himmennys kuten luettelo Himmennys toimintona (Of T). ForEach (toiminta)
Microsoft määrittelee edelleen toiminta "valtuutettuna menetelmälle, joka suorittaa toiminnon sille siirretyssä objektissa. Nykyisen luettelon (T) elementit siirretään erikseen toiminnan (T) edustajalle. "
Kärki: Lue lisää edustajista Delegaattien käyttäminen Visual Basic .NET: ssä suorituksen joustavuuteen.
Ensimmäinen asia, joka sinun on koodattava, on menetelmä, joka siirretään. Tämän yhden avainkäsityksen väärinkäsitys on lähde useimmat VB.NET-opiskelijoiden hämmennyksestä. Tämä toiminto tai aliohjelma on, missä kaikki "Of" -tyyppisten objektien mukautetut koodaukset tehdään.
Kun suoritat oikein, olet pohjimmiltaan valmis. Se on todella yksinkertaista tässä ensimmäisessä esimerkissä. Koko esimerkki Pullo ohitetaan ja aliohjelma valitsee siitä kaiken tarvittavan. Koodaa Jokaiselle itsekin on yksinkertaista. Täytä vain edustajan osoite käyttämällä AddressOf menetelmä.
AlinäyttöPullo (ByVal b kuin pullo) ResultList. Kohteita. Lisää (_ b. Tuotemerkki & "-" & _ b. Nimi & "-" & _ b. Luokka & "-" & _ b. Koko) End Sub Private Sub ForEachButton_Click (... ResultList. Kohteita. Tyhjennä () ResultList. Kohteita. Lisää ("Jokaiselle esimerkille") ResultList. Kohteita. Lisää ("") kaappi. ForEach (näyttöOmaPullo) End Sub
Löydä kaikki esimerkit
FindAll on hieman monimutkaisempi. Microsoftin dokumentaatio verkkotunnukselle FindAll näyttää tältä:
Himmentävä esiintyy luettelona. Himmainen vastaa ennusteena (T: stä). Himma palautusarvo luettelona (T: stä) returnValue = esiintymä. Löydä kaikki (ottelu)
Tämä syntaksi sisältää uuden elementin, Ennuste (T). Microsoftin mukaan tämä edustaa menetelmää ", joka määrittelee joukon kriteerejä ja määrittää, onko määritetty objekti täyttää nämä kriteerit. "Toisin sanoen voit luoda minkä tahansa koodin, joka löytää jotain lista. Koodain Ennuste (T) löytää mitään "oluesta" Kategoria.
Sen sijaan, että kutsutaan edustajan koodia jokaiselle luettelon kohteelle, FindAll palauttaa kokonaisen Lista (T) joka sisältää vain ottelut, jotka johtuvat sinun Ennuste (T). Koodisi määrittelee tämän sekunnin molemmat Lista (T) ja tehdä jotain sen kanssa. Koodini lisää vain kohteet kohtaan ListBox-.
Yksityinen alihakuAlnapainike_Click (ByVal - lähettäjä järjestelmänä. Kohde, ByVal e As System. EventArgs) käsittelee FindAllButton. Napsauta ResultList. Kohteita. Tyhjennä () ResultList. Kohteita. Lisää ("FindAll Esimerkki") ResultList. Kohteita. Lisää ("") himmentävä alaluettelo luettelona (pullosta) alaluettelo = Kaapina. Löydä kaikki (LöydäBeer-osoitteet) jokaisesta r as pull -kohdasta alaluettelossa ResultList. Kohteita. Lisää (_ r. Tuotemerkki & "-" & _ r. Nimi & "-" & _ r. Luokka & "-" & _ r. Koko) Seuraava loppu alatoiminto findBeer (ByVal b kuin pullo) _ loogisena, jos (b. Luokka = "Olut") Palauta sitten True Else Return False End, jos End Function
Lajittele esimerkki
Viimeinen menetelmä, jota tässä artikkelissa tarkastellaan, on Järjestellä. Jälleen kerran, Microsoft käyttää terminologiaa, jota et ehkä tunne. Laitteita on oikeastaan neljä erilaista ylikuormitusta Järjestellä menetelmä:
- Järjestellä()
- Lajittele (IComparer (T))
- Lajittele (vertailu (T))
- Lajittele (Int32, Int32, IComparer (T))
Tämän avulla voit käyttää luettelon .NET-kehyksessä määriteltyjä lajittelumenetelmiä, koodata omia, käyttää järjestelmää määritetty vertailu tyypin tai lajitellaan kokoelman osaa varten lähtöpaikka ja laskenta parametri.
Koska tässä esimerkissä suoritan lajittelun tosiasiallisesti seuraavan syntaksin avulla, käytän kolmatta ylikuormitusta.
X. Name.x. Nimi. VertaaTo (y. Nimi) (y. Nimi)
Olen koodattu toinen edustaja omaan vertailijaan. Koska haluan lajitella minun Nimi, Vedän juuri tämän arvon jokaisesta Pullo objekti, joka on ohitettu, ja käytä Lajittele (vertailu )>))). Järjestellä menetelmä järjestää alkuperäisen todella Lista (T). Sitä prosessoidaan menetelmän suorittamisen jälkeen.
Yksityinen alijärjestyspainike_klikkaa (ByVal - lähettäjä järjestelmänä. Kohde, ByVal e As System. EventArgs) Käsittelee SortButton. Napsauta ResultList. Kohteita. Tyhjennä () ResultList. Kohteita. Lisää ("Lajitteluesimerkki") ResultList. Kohteita. Lisää ("") kaappi. Lajittele (AddressOf sortCabinet) jokaiselle r pullolle kaapin ResultList. Kohteita. Lisää (_ r. Nimi & "-" & _ r. Tuotemerkki & "-" & _ r. Luokka & "-" & _ r. Koko) Seuraava loppu Osa yksityinen jaettu toiminto sortCabinet (_ ByVal x pullona, ByVal y pullona) Kokonaisluku Palauta x. Nimi. VertaaTo (y. Nimi) Lopeta toiminto
Nämä menetelmät valittiin osoittamaan tärkeimmät tavat, joita Framework käyttää vuonna 2006 Lista (T) todella koodataan. Siellä on kuitenkin koko joukko muita menetelmiä. Se mikä tekee Lista (T) niin hyödyllistä!