A Generics számos területen kibővíti a VB.NET teljesítményét és rugalmasságát, de nagyobb teljesítmény-előnyt és több programozási lehetőséget kap a generikus alkalmazásban Lista tárgy [Lista (T-ből)], mint bármely más.
Használni Lista (T-ből), meg kell értenie a .NET-keretrendszer által biztosított sok módszer megvalósítását. Az alábbiakban három példát használunk Az egyes, Találd meg mindetés Fajta, amely megmutatja, hogy az általános Lista osztályművek.
A legelső lépés egy generikus termék létrehozása Lista. Az adatokat sokféle módon meg lehet kapni, de a legegyszerűbb az egyszerű hozzáad azt. Az alábbi kód megmutatja, hogyan lehet besorolni a sör- és borgyűjteményem!
Kiindulási kód
Először olyan tárgynak kell lennie, amely a palackot képviseli a gyűjteményből. A Windows Forms alkalmazásban az Űrlap osztálynak először egy fájlban kell lennie, vagy a Visual Studio tervezője nem fog megfelelően működni, tehát tedd ezt a végére:
Nyilvános osztályú üveg. Nyilvános márka mint húrok. Nyilvános név, mint karakterlánc. Nyilvános kategória mint karakterlánc. Nyilvános méret decimálisként. Nyilvános al új (_. ByVal m_Brand mint húros, _. ByVal m_Name as String, _. ByVal m_Category as String, _. ByVal m_Size as Decimal) Márka = m_Brand. Név = m_Name. Kategória = m_kategória. Méret = m_Méret. Befejezés Sub. Végkategória
A gyűjtemény felépítéséhez hozzáad az elemeket. Ez az, ami a Űrlap betöltése esemény:
Homályos szekrény mint lista (palackból) = _. "Új lista (palackból) Szekrény. Hozzáadás (új üveg (_. "Castle Creek", _. "Uintah Blanc", _. "Bor", 750)) Szekrény. Hozzáadás (új üveg (_. "Zion Canyon Sörgyár", _. "Springdale Amber Ale", _. "Sör", 355)) Szekrény. Hozzáadás (új üveg (_. "Spanyol-völgyi szőlőültetvények", _. "Syrah", _. "Bor", 750)) Szekrény. Hozzáadás (új üveg (_. "Wasatch Beers", _. "Polygamy Porter", _. "Sör", 355)) Szekrény. Hozzáadás (új üveg (_. "Squatters Beer", _. "Provo Girl Pilsner", _. "Sör", 355))
A fenti kód mindegyike a VB.NET 1.0 szabványos kódja. Ne feledje azonban, hogy a saját meghatározásával Üveg objektum esetén, ugyanabban a gyűjteményben többféle típusú előnyeket élvezhet (ebben az esetben mindkettőt) Húr és Decimális) és hatékony, típusú biztonságos "késői kötés".
Minden példa
A móka akkor kezdődik, amikor a módszereket használjuk. A kezdethez hajtsuk végre az ismerősöt Az egyes eljárás. A Microsoft dokumentációja tartalmazza a következő szintaxis-meghatározást:
Halvány példány mint lista Halvány akció mint művelet (Of T) példány. ForEach (akció)
A Microsoft tovább határozza meg akció mint "delegált egy olyan módszerre, amely végrehajt egy műveletet az átadott objektumon. Az aktuális lista (T) elemeit külön-külön továbbítják a cselekvés (T) képviselőjéhez. "
Tipp: További információ a küldöttekről: A küldöttek használata a Visual Basic .NET-ben a futásidejű rugalmasság érdekében.
Az első dolog, amit kódolni kell, a delegált módszer. Ennek az egyik kulcspontnak a félreértése a forrása a legtöbb a VB.NET hallgatók zavarától. Ez a funkció, vagy szubrutin, a "Of" típusú objektumok összes testreszabott kódolásakor történik.
Ha helyesen hajtják végre, lényegében kész vagy. Ebben az első példában nagyon egyszerű. A teljes példánya Üveg átkerül, és az alprogram szétválaszt belőle mindent. Kódolása Az egyes maga is egyszerű. Csak írja be a küldött címét a Címe eljárás.
Sub displayBottle (ByVal b As Bottle) ResultList. Terméket. Add (_ b. Márka & "-" & _ b. Név & "-" & _ b. Kategória & "-" & _ b. Méret) Vége Sub Privát Sub ForEachButton_Click (... ResultList. Terméket. Törlés () ResultList. Terméket. Add ("Minden példához") ResultList. Terméket. Add a ("") szekrényt. ForEach (displayOf displayBottle) vége Sub
FindAll példa
Találd meg mindet egy kicsit bonyolultabb. A Microsoft dokumentációja a Találd meg mindet így néz ki:
Eltávolítás példányként Listaként Dim egyezés Predicate (Of T) Dim returnValue As List (Of T) visszatérési érték = példányként. FindAll (egyezés)
Ez a szintaxis új elemet tartalmaz, Jóslat (T). A Microsoft szerint ez azt a módszert képviseli, "amely meghatározza egy kritériumkészletet és meghatározza, hogy a - e egy megadott objektum megfelel ezeknek a kritériumoknak. "Más szavakkal, bármilyen kódot létrehozhat, amely megtalál valamit a lista. Kódoltam Jóslat (T) bármit megtalálni a "Sörben" Kategória.
Ahelyett, hogy a lista minden elemére felhívná a küldött kódot, Találd meg mindet egy egészet ad vissza (T) lista csak azokat a mérkőzéseket tartalmazza, amelyek a Jóslat (T). A kódod határozza meg, hogy mindkettő meghatározza ezt a másodpercet (T) lista és csinálj vele valamit. A kódom csak hozzáadja az elemeket a ListBox.
Magán Sub FindAllButton_Click (ByVal feladó mint rendszer. Objektum, ByVal e As System. EventArgs) kezeli a FindAllButton fájlt. Kattintson az ResultList elemre. Terméket. Törlés () ResultList. Terméket. Add ("FindAll példa") ResultList. Terméket. Add ("") Dim sublist as List (Of Bottle) allista = szekrény. A FindAll (a FindBeer címe) mindegyik palackként az ReslistList allistában. Terméket. Add (_ r. Márka & "-" & _ r. Név & "-" & _ r. Kategória & "-" & _ r. Méret) Következő vége alfunkció findBeer (ByVal b mint palack) _ logikai értékként if (b. Kategória = "Sör") Ezután visszatér True Else Visszatérő hamis vége, ha a End Function
Rendezési példa
Az utolsó módszer, amelyet ez a cikk megvizsgál, a következő Fajta. A Microsoft ismét olyan terminológiát használ, amelyekkel Ön esetleg még nem ismeri. Valójában négy különféle túlterhelés létezik Fajta eljárás:
- Fajta()
- Rendezés (IComparer (T))
- Rendezés (összehasonlítás (T))
- Rendezés (Int32, Int32, IComparer (T))
Ez lehetővé teszi a .NET-keretrendszerben meghatározott listázási módszerek használatát, a saját kódolását, a rendszer használatát meghatározott összehasonlítás a gyűjtemény típusához vagy rendezéséhez, a kiindulási helyzet és a szám felhasználásával paraméter.
Ebben a példában, mivel a következő szintaxist használom a válogatás végrehajtására, a harmadik túlterhelést használom.
x. Name.x. Név. Összehasonlítás (y. Név) (y. Név)
Kódoltam egy másik küldöttet a saját összehasonlítómhoz. Mivel én szerint akarok rendezni Név, Csak ezt az értéket húzom ki a Üveg objektum, amelyet átadtak, és használja a Rendezés (Összehasonlítás )>))). Az Fajta módszer valójában átrendezi az eredeti példányt (T) lista. Ez történik a módszer végrehajtása után.
Magán Sub SortButton_Click (ByVal feladó mint rendszer. Objektum, ByVal e As System. EventArgs) kezeli a SortButton elemet. Kattintson az ResultList elemre. Terméket. Törlés () ResultList. Terméket. Add ("Rendezési példa") ResultList. Terméket. Add a ("") szekrényt. Rendezés (AddressOf sortCabinet) Mindegyik üveghez palackban a szekrény ResultList-ben. Terméket. Add (_ r. Név & "-" & _ r. Márka & "-" & _ r. Kategória & "-" & _ r. Méret) Következő vége Sub Private Shared Function sortCabinet (_ ByVal x palackként, ByVal y palackként) egész számként x. Név. Összehasonlítás (y. Név) Funkció vége
Ezeket a módszereket úgy választották meg, hogy bemutassák azokat a főbb módszereket, amelyekkel a keretrendszer módszereket alkalmaz (T) lista valójában kódolt. Van azonban egy egész sor más módszer. Ez teszi (T) lista olyan hasznos!