Yra tik trys būdai, kaip organizuoti VB.NET taikymas.
- Moduliai
- Konstrukcijos
- Klasės
Tačiau dauguma techninių straipsnių daro prielaidą, kad jūs jau žinote apie juos visus. Jei esate vienas iš daugelio, kuriam vis dar kyla keletas klausimų, galite tiesiog perskaityti praeinantį klaidinantį tekstą ir vis tiek pabandyti išsiaiškinti. O jei turite daug laiko, galite pradėti ieškoti „Microsoft“ dokumentacija:
- "Modulis yra nešiojamasis vykdomasis failas, pavyzdžiui, type.dll arba application.exe, susidedantis iš vienos ar daugiau klasių ir sąsajų."
- "Klasės teiginys apibūdina naują duomenų tipą."
- "Struktūros sakinys nusako sudėtinę vertės tipą, kurį galite tinkinti."
Teisingai, tada. Turite klausimų?
Norėdami būti šiek tiek teisingesni „Microsoft“ atžvilgiu, jie turi puslapius ir puslapius (ir daugiau puslapių) informacijos apie visus šiuos dalykus, kuriuos galite naudoti. Ir jie turi būti kuo tikslesni, nes jie nustato standartą. Kitaip tariant, „Microsoft“ dokumentacija kartais skaitoma kaip įstatymų knyga, nes ji yra įstatymų knyga.
Bet jei jūs tik mokotės .NET, tai gali būti labai painu! Jūs turite pradėti kažkur. Trijų pagrindinių būdų, kaip galite rašyti kodą VB.NET, supratimas yra gera vieta pradėti.
Tu gali rašyti VB.NET kodas naudojant bet kurią iš šių trijų formų. Kitaip tariant, galite sukurti Konsolės programa VB.NET Express ir parašykite:
Modulis1 modulis
Pagrindinė dalis ()
„MsgBox“ („Tai yra modulis!“)
Pabaigos poskyris
Pabaigos modulis
1 klasė
Pagrindinė dalis ()
„MsgBox“ („Tai klasė“)
Pabaigos poskyris
Pabaigos klasė
Struktūros strypas1
Dim myString kaip stygos
Pagrindinė dalis ()
„MsgBox“ („Tai yra struktūra“)
Pabaigos poskyris
Pabaigos struktūra
Tai nereiškia bet kokia prasmė kaip programa, žinoma. Esmė ta, kad negaunate sintaksės klaidos, todėl ji yra „legali“ VB.NET kodas.
Šios trys formos yra vienintelis būdas koduoti visų .NET: objekto karalienės bičių šaknis. Vienintelis elementas, nutraukiantis trijų formų simetriją, yra teiginys: Dim myString kaip stygos. Tai turi būti susiję su struktūra, kuri yra „sudėtinis duomenų tipas“, kaip „Microsoft“ nurodo jų apibrėžime.
Kitas dalykas, kurį reikia pastebėti, yra tai, kad visi trys blokai turi a Pagrindinė dalis () juose. Paprastai vadinamas vienu iš pagrindinių OOP principų inkapsuliacija. Tai yra „juodosios dėžės“ efektas. Kitaip tariant, jūs turėtumėte mokėti elgtis su kiekvienu objektu atskirai, tai apima ir identiškų pavadinimų paprogramių naudojimą, jei norite.
Klasės
Užsiėmimai yra „tinkama“ vieta pradėti, nes, kaip „Microsoft“ pažymi, kad „klasė yra pagrindinis objektinio programavimo (OOP) elementas“. Tiesą sakant, kai kurie autoriai modulius ir struktūras traktuoja kaip tik specialias klases. Klasė labiau orientuota į objektą nei modulis, nes tai įmanoma akimirksniu (pasidarykite jos kopiją) klasės, bet ne modulio.
Kitaip tariant, galite koduoti ...
1 klasės klasė
Privatus antrinės formos1_krovimas (_
„ByVal“ siuntėjas kaip sistema. Objektas, _
„ByVal e As“ sistema. „EventArgs“ _
Tvarko „MyBase“. Apkrova
Sumažinkite myNewClass As1 klasė = Nauja1 klasė
„myNewClass“. „ClassSub“ ()
Pabaigos poskyris
Pabaigos klasė
(Pabrėžiamas klasės momentalumas.)
Nesvarbu, ar pati klasė, šiuo atveju, ...
Visuomenės klasė1
„Sub ClassSub“ ()
„MsgBox“ („Tai klasė“)
Pabaigos poskyris
Pabaigos klasė
... yra pats failas arba yra to paties failo su 1 forma kodas. Programa veikia lygiai taip pat. (Pastebėti, kad 1 forma yra klasė.)
Taip pat galite parašyti klasės kodą, kuris elgiasi panašiai kaip modulis, tai yra, jo neatskleisdamas. Tai vadinama a Bendrai klasė. Straipsnyje „Statiška“ (tai yra „Bendrai naudojama“), palyginti su dinaminiais tipais, VB.NET paaiškinta tai daug išsamiau.
Reikėtų nepamiršti ir kito fakto apie užsiėmimus. Nariai klasės (savybės ir metodai) egzistuoja tik tuo metu, kai egzistuoja klasės egzempliorius. Pavadinimas tai yra apimties nustatymas. Tai yra taikymo sritis klasės egzempliorių yra nedaug. Aukščiau pateiktą kodą galima pakeisti, kad būtų galima tai iliustruoti:
1 klasės klasė
Privatus antrinės formos1_krovimas (_
„ByVal“ siuntėjas kaip sistema. Objektas, _
„ByVal e As“ sistema. „EventArgs“ _
Tvarko „MyBase“. Apkrova
Sumažinkite myNewClass As1 klasė = Nauja1 klasė
„myNewClass“. „ClassSub“ ()
myNewClass = Nieko
„myNewClass“. „ClassSub“ ()
Pabaigos poskyris
Pabaigos klasė
Kai antras „myNewClass“. „ClassSub“ () pareiškimas vykdomas, a „NullReferenceException“ klaida išmesta, nes „ClassSub“ nario nėra.
Moduliai
VB 6 buvo įprasta matyti programas, kuriose didžioji dalis kodo buvo modulyje (A .BAS, o ne, pavyzdžiui, a Forma failą, tokį kaip Forma1.frm.) VB.NET tinkle yra tiek moduliai, tiek klasės .VB bylos. Pagrindinė priežastis, dėl kurios moduliai yra įtraukti į VB.NET, yra suteikti programuotojams būdą organizuoti savo sistemas, įdedant kodą į skirtingas vietas, kad būtų patobulinta jų apimtis ir prieiga. kodas. (Tai yra, kiek laiko egzistuoja modulio nariai ir koks kitas kodas gali nurodyti ir naudoti narius.) Kartais, norėdami palengvinti darbą, galbūt norėsite sudėti kodą į atskirus modulius.
Visi VB.NET moduliai yra Bendrai nes jie negali būti momentiniai (žr. aukščiau) ir gali būti pažymėti Draugui arba Vieša todėl juos galima pasiekti tame pačiame rinkinyje arba bet kada, kur yra nuorodos.
Konstrukcijos
Iš trijų objektų formų konstrukcijos yra mažiausiai suprantamos. Jei mes kalbėtume apie „gyvūnus“, o ne „objektus“, struktūra būtų tokia Aardvarkas.
Didelis skirtumas tarp struktūros ir klasės yra tas, kad struktūra yra a vertės tipas o klasė yra a nuorodos tipas.
Ką tai reiškia? Aš taip džiaugiuosi, kad paklausėte.
Vertės tipas yra objektas, saugomas tiesiogiai atmintyje. An Sveikasis skaičius yra geras vertės rūšies pavyzdys. Jei paskelbėte Sveikasis skaičius jūsų programoje kaip ši ...
Dim myInt kaip sveikasis skaičius = 10
... ir patikrinote atminties vietą, saugomą myInt, jūs rastumėte 10 vertę. Jūs taip pat matote, kad tai „paskirstoma į krūvą“.
Rinkinys ir krūva yra tiesiog skirtingi kompiuterio atminties naudojimo valdymo būdai.
Atskaitos tipas yra objektas, kurio objekto vieta saugoma atmintyje. Taigi nuorodos tipo vertės nustatymas visada yra dviejų žingsnių peržiūra. A Stygos yra geras pavyzdinio tipo pavyzdys. Jei paskelbėte Stygos kaip šitas ...
Dim myString as String = "Tai yra myString"
... ir patikrinote atminties vietą, saugomą „myString“, rastumėte kitą atminties vietą (vadinamą a rodyklė - šis elgesio būdas yra pati C stiliaus kalbų širdis). Turėtumėte nuvykti į tą vietą, kad rastumėte reikšmę „Tai yra„ myString “. Tai dažnai vadinama „paskirstymu krūvoje“. Rietuvė ir krūva
Kai kurie autoriai sako, kad reikšmių tipai nėra net objektai ir tik nuorodų tipai gali būti objektai. Be abejo, tokios sudėtingos objekto savybės kaip palikimas ir inkapsuliacija galimi tik su nuorodų tipais. Bet mes pradėjome visą šį straipsnį sakydami, kad yra trys objektų formos, todėl turiu sutikti, kad struktūros yra kažkoks objektas, net jei jie yra nestandartiniai objektai.
Programavimo struktūrų ištakos siekia tokias kalbas kaip failai, pvz., Kobolas. Šiomis kalbomis duomenys paprastai buvo apdorojami kaip nuoseklūs failai. Failo įrašo „laukai“ buvo aprašyti skyrelyje „duomenų apibrėžimas“ (kartais vadinamas „įrašo išdėstymu“ arba „knygos knyga“). Taigi, jei įraše iš bylos yra:
1234567890ABCDEF9876
Vienintelis būdas sužinoti, kad „1234567890“ buvo telefono numeris, „ABCDEF“ buvo ID, o 9876 - 98,76 USD per duomenų apibrėžimą. Konstrukcijos padeda tai padaryti VB.NET.
Struktūra Struktūra1
Pabaigos struktūra
Nes a Stygos yra pamatinis tipas, būtina išlaikyti ilgį vienodą su „VBFixedString“ fiksuoto ilgio įrašų atributas. Išplėstą šio atributo ir atributų paaiškinimą galite rasti straipsnyje Atributai VB .NET.
Nors struktūros yra nestandartiniai objektai, jie turi daug galimybių VB.NET. Galite koduoti metodus, ypatybes ir net įvykius bei įvykių tvarkytuvus struktūrose, tačiau taip pat galite naudoti supaprastintą kodą, nes jie yra vertės tipai, todėl apdorojimas gali būti greitesnis. Pvz., Galite perkoduoti aukščiau pateiktą struktūrą:
Struktūra Struktūra1
Sub mySub ()
„MsgBox“ (Tai „myPhone“ vertė: „& myPhone)
Pabaigos poskyris
Pabaigos struktūra
Ir naudok tai taip:
Dim myStruct As Struktūra1
„myStruct.myPhone =“ 7894560123 “
„myStruct.mySub“ ()
Verta skirti laiko šiek tiek pažaisti su struktūromis ir išmokti, ką jie gali padaryti. Jie yra vienas iš keistų VB.NET kampelių, kurie gali būti stebuklinga kulka, kai jums to reikia.