„Generics“ praplečia VB.NET galią ir lankstumą daugelyje sričių, tačiau jūs gausite didesnį našumo pranašumą ir daugiau programavimo galimybių naudodami bendrąjį Sąrašas objektas [Sąrašas (iš T)] nei su bet kuo kitu.
Naudoti Sąrašas (iš T), jūs turite suprasti, kaip įgyvendinti daugybę metodų, kuriuos teikia .NET Framework. Žemiau yra trys pavyzdžiai, naudojant Kiekvienam, „FindAll“ir Rūšiuoti, parodo, kaip generinis Sąrašas klasės darbai.
Pirmasis žingsnis yra sukurti generinį Sąrašas. Duomenis galite gauti įvairiais būdais, tačiau paprasčiausias yra teisingas Papildyti tai. Žemiau pateiktas kodas parodo, kaip klasifikuoti mano alaus ir vyno kolekciją!
Pradinis kodas
Pirmiausia turi būti objektas, kuris reprezentuos butelį iš kolekcijos. „Windows Forms“ programoje forma „Class“ pirmiausia turi būti faile, kitaip „Visual Studio“ dizaineris neveiks tinkamai, todėl pateikite tai pabaigoje:
Visuomenės klasės butelis. Visuomenės prekės ženklas „String“. Viešas vardas kaip styga. Vieša kategorija kaip styga. Visuomenės dydis kaip dešimtainis. Nauja vieša dalis (_. „ByVal m_Brand As String“, _. ByVal m_Name As String, _. „ByVal m_Category As String“, _. „ByVal“ m_Size kaip dešimtainis) Gamintojas = m_Brand. Vardas = m_Name. Kategorija = m_kategorija. Dydis = m_Size. Pabaigos poskyris. Pabaigos klasė
Norėdami sukurti kolekciją, Papildyti daiktai. Štai kas yra Formos apkrova įvykis:
Dim kabinetas kaip sąrašas (iš butelio) = _. „Naujas sąrašas (iš butelio) Kabinetas. Pridėti (naujas butelis (_. „Pilies upelis“, _. „Uintah Blanc“, _. „Vynas“, 750)) Kabinetas. Pridėti (naujas butelis (_. „Alaus darykla„ Zion Canyon ““, _. „Springdale Amber Ale“, _. „Alus“, 355)) Kabinetas. Pridėti (naujas butelis (_. „Ispanijos slėnio vynuogynai“, _. „Syrah“, _. „Vynas“, 750)) Kabinetas. Pridėti (naujas butelis (_. „Wasatch alus“, _. „Poligamijos nešėjas“, _. „Alus“, 355)) Kabinetas. Pridėti (naujas butelis (_. „Squatters alus“, _. „Provo mergina Pilsner“, _. „Alus“, 355))
Visas aukščiau pateiktas kodas yra standartinis kodas VB.NET 1.0. Tačiau atkreipkite dėmesį, kad apibrėždami savo Butelis objektą, gausite kelių rūšių pranašumus toje pačioje kolekcijoje (šiuo atveju abu Stygos ir Dešimtainis) ir efektyvus, saugus, „vėlyvas įrišimas“.
„ForEach“ pavyzdys
Smagumas prasideda tada, kai mes naudojame metodus. Norėdami pradėti, įgyvendinkime pažįstamą Kiekvienam metodas. „Microsoft“ dokumentuose yra šis naudojimo sintaksės apibrėžimas:
Sumažinta instancija kaip sąrašas Dim veiksmas kaip veiksmas (iš T). „ForEach“ (veiksmas)
„Microsoft“ toliau apibrėžia veiksmas kaip „deleguoti metodą, kuris atlieka veiksmą su jam perduotu objektu. Dabartinio sąrašo (T) elementai atskirai perduodami veiksmo (T) delegatui. “
Patarimas: Norėdami sužinoti daugiau apie delegatus, skaitykite Delegatų naudojimas „Visual Basic .NET“ vykdymo laiko lankstumui.
Pirmas dalykas, kurį reikia užkoduoti, yra metodas, kuris bus deleguotas. Nesusipratimas dėl šio vieno pagrindinio dalyko yra šaltinis dauguma apie VB.NET studentų painiavą. Ši funkcija arba paprogramė yra ta, kur atliekamas visas pritaikytas kodavimas „Of“ tipo objektams.
Kai atliksite teisingai, iš esmės būsite pasiruošę. Šiame pirmame pavyzdyje tai tikrai paprasta. Visas pavyzdys Butelis yra išlaikytas, o paprogramė iš jo atrenka viską, ko reikia. Kodavimas Kiekvienam pati savaime taip pat paprasta. Tiesiog užpildykite delegato adresą naudodamiesi Adresas metodas.
Papildomas ekranasButelis („ByVal b As Bottle“) „ResultList“. Daiktai. Pridėti (_ b. Prekės ženklas & "-" & _ b. Vardas ir „-“ & _ b. Kategorija & „-“ ir _b. Dydis) Pabaigos dalis „Privatus“ „ForEachButton_Click“ (... Rezultatų sąrašas. Daiktai. Išvalyti () ResultList. Daiktai. Pridėti („Už kiekvieną pavyzdį“) „ResultList“. Daiktai. Pridėkite ("") spintelę. „ForEach“ („AddressOf displayBottle“) pabaiga
„FindAll“ pavyzdys
„FindAll“ yra šiek tiek sudėtingesnis. „Microsoft“ dokumentacija „FindAll“ atrodo taip:
Neįmanomas egzempliorius kaip sąrašas Neįmanomas atitikimas kaip numatomas (iš T) Dim returnValue kaip sąrašas (iš T) returnValue = instancija. „FindAll“ (atitiktis)
Ši sintaksė apima naują elementą, Prognozė (iš T). Anot Microsoft, tai bus metodas ", kuris apibrėžia kriterijų rinkinį ir nustato, ar nurodytas objektas atitinka tuos kriterijus. “Kitaip tariant, galite sukurti bet kurį kodą, kuris kažką ras sąrašą. Aš užkodavau savo Prognozė (iš T) ką nors rasti „Alume“ Kategorija.
Užuot paskambinę kiekvienam sąrašo elementui deleguotojo kodą, „FindAll“ grąžina visumą Sąrašas (T) kuriame yra tik tos atitiktys, atsirandančios dėl jūsų Prognozė (iš T). Pagal jūsų kodą abu turi apibrėžti šią sekundę Sąrašas (T) ir padaryk su tuo ką nors. Mano kodas tiesiog prideda elementus į a „ListBox“.
„Private Sub FindAllButton_Click“ („ByVal“ siuntėjas kaip sistema. Objektas, „ByVal e As“ sistema. „EventArgs“) tvarko „FindAllButton“. Spustelėkite ResultList. Daiktai. Išvalyti () ResultList. Daiktai. Pridėti („FindAll“ pavyzdys) „ResultList“. Daiktai. Pridėti ("") Dim sublist kaip sąrašą (iš butelių) sublist = Cabinet. „FindAll“ („AddressOf findBeer“) Kiekvienam buteliui, esančiam pogrupyje „ResultList“. Daiktai. Pridėti (_ r. Prekės ženklas & "-" & _ r. Vardas ir „-“ & _ r. Kategorija & „-“ ir _ r. Dydis) Kitas pabaigos požymis Funkcija „findBeer“ („ByVal b“ kaip butelis) _ kaip „Boolean If“ (b. Kategorija = „Alus“) Tada grįžkite „True Else“ („Teisinga kitur“), nurodykite „Netinkama pabaiga“, jei funkcija „Pabaiga“
Rūšiavimo pavyzdys
Šis straipsnis nagrinėja galutinį metodą Rūšiuoti. Vėlgi, „Microsoft“ naudoja kai kuriuos terminus, kurie galbūt nėra jums žinomi. Iš tikrųjų yra keturios skirtingos Rūšiuoti metodas:
- Rūšiuoti ()
- Rūšiuoti („IComparer“ (T))
- Rūšiuoti (palyginimas (T))
- Rūšiuoti (Int32, Int32, IComparer (T))
Tai leidžia naudoti rūšiavimo metodus, apibrėžtus .NET Framework sąraše, koduoti savo duomenis, naudoti sistemą apibrėžtas rūšies palyginimas ar rūšiavimo dalis naudojant pradinę padėtį ir skaičių parametras.
Šiame pavyzdyje, kadangi norėdamas atlikti rūšiavimą naudoju šią sintaksę, naudoju trečiąją perkrovą.
x. Vardas.x. Vardas. Palyginti su (y. Vardas) (y. Vardas)
Aš užkodaviau kitą delegatą pas savo palyginimą. Kadangi noriu rūšiuoti pagal savo vardas, Aš atkreipiu tik tą vertę iš kiekvieno Butelis objektą, kuris yra perduotas, ir naudokite Rūšiuoti (palyginimas )>))). Rūšiuoti metodas iš tikrųjų pertvarko originalą Sąrašas (T). Štai kas yra apdorojama atlikus metodą.
„Private Sub SortButton_Click“ („ByVal“ siuntėjas kaip sistema. Objektas, „ByVal e As“ sistema. „EventArgs“) Rankenėlės „SortButton“. Spustelėkite ResultList. Daiktai. Išvalyti () ResultList. Daiktai. Pridėti („Rūšiavimo pavyzdys“) „ResultList“. Daiktai. Pridėkite ("") spintelę. Rūšiuoti („AddressOf sortCabinet“) kiekvienam buteliui, esančiam spintelėje „ResultList“. Daiktai. Pridėti (_ r. Vardas ir „-“ & _ r. Prekės ženklas & "-" & _ r. Kategorija & „-“ ir _ r. Dydis) Kitas pabaiga Sub Private Shared Function sortCabinet (_ ByVal x kaip butelis, ByVal y kaip butelis) Kaip sveikasis skaičius Grįžti x. Vardas. Palyginti su (y. Pavadinimas) Pabaigos funkcija
Šie metodai buvo pasirinkti siekiant parodyti pagrindinius pagrindų metodų taikymo būdus Sąrašas (T) iš tikrųjų yra koduojami. Tačiau yra daugybė kitų metodų. Štai kas daro Sąrašas (T) taip naudinga!