Der er kun tre måder at organisere en VB.NET Ansøgning.
- moduler
- strukturer
- Klasser
Men de fleste tekniske artikler antager, at du allerede ved alt om dem. Hvis du er en af de mange, der stadig har et par spørgsmål, kan du bare læse forbi de forvirrende bits og prøve at finde ud af det alligevel. Og hvis du har en masse tid, kan du begynde at søge igennem Microsofts dokumentation:
- Et modul er en bærbar eksekverbar fil, såsom type.dll eller application.exe, bestående af en eller flere klasser og grænseflader. "
- "En klasseseddel definerer en ny datatype."
- "Strukturopgørelsen definerer en sammensat værditype, som du kan tilpasse."
Lige da. Nogen spørgsmål?
For at være lidt mere retfærdig overfor Microsoft har de sider og sider (og flere sider) med information om alle disse, som du kan vade igennem. Og de skal være så nøjagtige som muligt, fordi de sætter standarden. Med andre ord læser Microsofts dokumentation undertiden som en lovbog, fordi den er en lovbog.
Men hvis du bare lærer .NET, kan det være meget forvirrende! Du skal starte et sted. At forstå de tre grundlæggende måder, du kan skrive kode på VB.NET på, er et godt sted at starte.
Du kan skrive VB.NET kode ved hjælp af en af disse tre former. Med andre ord kan du oprette en Konsolapplikation i VB.NET Express og skriv:
Modul Modul1
Underhoved ()
MsgBox ("Dette er et modul!")
Afslut under
Slutmodul
Klasse Klasse1
Underhoved ()
MsgBox ("Dette er en klasse")
Afslut under
Slutteklasse
Strukturstruktur1
Dim myString som streng
Underhoved ()
MsgBox ("Dette er en struktur")
Afslut under
Slutstruktur
Dette gør ikke nogen sans som et program, selvfølgelig. Pointen er, at du ikke får en syntaksfejl, så den er "lovlig" VB.NET-kode.
Disse tre former er den eneste måde at kode dronningsbieroden til hele .NET: objektet. Det eneste element, der afbryder symmetrien i de tre former, er udsagnet: Dim myString som streng. Det har at gøre med en struktur, der er en "sammensat datatype", som Microsoft siger i deres definition.
En anden ting at bemærke er, at alle tre blokke har en Underhoved () i dem. En af de mest grundlæggende principper for OOP kaldes normalt indkapsling. Dette er den "sorte boks" -effekt. Med andre ord skal du være i stand til at behandle hvert objekt uafhængigt, og det inkluderer brug af identisk navngivne underprogrammer, hvis du vil.
Klasser
Klasser er det 'rigtige' sted at starte, fordi, som Microsoft bemærker, "En klasse er en grundlæggende byggesten til objektorienteret programmering (OOP)." Faktisk behandler nogle forfattere moduler og strukturer som bare specielle klasser. En klasse er mere objektorienteret end et modul, fordi det er muligt Instantiere (lav en kopi af) en klasse, men ikke et modul.
Med andre ord kan du kode ...
Offentlig klasseskema1
Privat underformular1_Load (_
ByVal afsender som system. Objekt, _
ByVal e As System. EventArgs) _
Håndterer MyBase. belastning
Dim myNewClass Som klasse1 = Ny klasse1
myNewClass. ClassSub ()
Afslut under
Slutteklasse
(Klassestimering fremhæves.)
Det betyder ikke noget, om selve klassen, i dette tilfælde, ...
Offentlig klasse klasse1
UnderklasseSub ()
MsgBox ("Dette er en klasse")
Afslut under
Slutteklasse
... er i en fil i sig selv eller er en del af den samme fil med Form1 kode. Programmet kører nøjagtigt på samme måde. (Læg mærke til det Form1 er også en klasse.)
Du kan også skrive klassekode, der opfører sig meget som et modul, dvs. uden at instantisere det. Dette kaldes a Delt klasse. Artiklen "Statisk" (dvs. "Delt") kontra dynamiske typer i VB.NET forklarer dette meget mere detaljeret.
En anden kendsgerning om klasser bør også huskes. Medlemmer (egenskaber og metoder) for klassen findes kun, mens klassen forekommer findes. Navnet på dette er områdeafgrænsning. Det vil sige anvendelsesområde af et eksempel på en klasse er begrænset. Koden ovenfor kan ændres for at illustrere dette punkt på denne måde:
Offentlig klasseskema1
Privat underformular1_Load (_
ByVal afsender som system. Objekt, _
ByVal e As System. EventArgs) _
Håndterer MyBase. belastning
Dim myNewClass Som klasse1 = Ny klasse1
myNewClass. ClassSub ()
myNewClass = Intet
myNewClass. ClassSub ()
Afslut under
Slutteklasse
Når den anden myNewClass. ClassSub () erklæring udføres, a NullReferenceException fejlen er kastet, fordi ClassSub medlem findes ikke.
moduler
I VB 6 var det almindeligt at se programmer, hvor det meste af koden var i et modul (A .BAS, fil snarere end for eksempel i en Form fil såsom Form1.frm.) I VB.NET er både moduler og klasser i .VB filer. Hovedårsagen til, at moduler er inkluderet i VB.NET, er at give programmerere en måde at organisere deres systemer ved at placere kode forskellige steder for at finjustere rækkevidden og adgangen til deres kode. (Det vil sige, hvor længe medlemmer af modulet findes, og hvilken anden kode der kan henvise til og bruge medlemmerne.) Nogle gange vil du måske sætte kode i separate moduler bare for at gøre det lettere at arbejde med.
Alle VB.NET-moduler er Delt fordi de ikke kan blive instantieret (se ovenfor), og de kan markeres ven eller Offentlig så de kan fås adgang til enten inden for den samme samling, eller når der henvises til dem.
strukturer
Strukturer er det mindst forståede af de tre former for genstande. Hvis vi talte om "dyr" i stedet for "objekter", ville strukturen være en Aardvark.
Den store forskel mellem en struktur og en klasse er, at en struktur er en værdi type og en klasse er en referencetype.
Hvad betyder det? Jeg er så glad for, at du spurgte.
En værditype er et objekt, der gemmes direkte i hukommelsen. en Heltal er et godt eksempel på en værditype. Hvis du erklærede en Heltal i dit program som dette ...
Dim myInt som heltal = 10
... og du kontrollerede hukommelsens placering, der er gemt i Myint, ville du finde værdien 10. Du kan også se dette beskrevet som "tildeles på stakken".
Stakken og dyngen er simpelthen forskellige måder at styre brugen af computerhukommelse på.
En referencetype er et objekt, hvor objektets placering gemmes i hukommelsen. Så at finde en værdi for en referencetype er altid et totrins-opslag. EN Snor er et godt eksempel på en referencetype. Hvis du erklærede en Snor sådan her ...
Dim myString som streng = "Dette er myString"
... og du kontrollerede hukommelsens placering, der er gemt i myString, ville du finde en anden hukommelsesplacering (kaldet a pointer - Denne måde at gøre ting på er hjertet i sprog i C-stil). Du bliver nødt til at gå til det sted for at finde værdien "Dette er myString". Dette kaldes ofte "at blive tildelt på dyngen". Stakken og dyngen
Nogle forfattere siger, at værdityper ikke engang er objekter, og at kun referencetyper kan være objekter. Det er bestemt rigtigt, at de sofistikerede objektegenskaber som arv og indkapsling er kun mulige med referencetyper. Men vi startede hele denne artikel med at sige, at der var tre former for objekter, så jeg er nødt til at acceptere, at strukturer er en slags genstand, selvom det er objekter, der ikke er standard.
Strukturerings programmeringsorigin går tilbage til filorienterede sprog som Cobol. På disse sprog blev data normalt behandlet som sekventielle flade filer. "Felterne" i en post fra filen blev beskrevet af en "datadefinition" -sektion (undertiden kaldet "postlayout" eller en "kopibog"). Så hvis en post fra filen indeholdt:
1234567890ABCDEF9876
Den eneste måde du ville vide, at "1234567890" var et telefonnummer, "ABCDEF" var et ID og 9876 $ 98,76 var gennem datadefinitionen. Strukturer hjælper dig med at udføre dette i VB.NET.
Struktur Structure1
Slutstruktur
Fordi en Snor er en referencetype, er det nødvendigt at holde længden den samme med VBFixedString attribut for poster med fast længde. Du kan finde en udvidet forklaring af denne attribut og attributter generelt i artiklen Attributter i VB. NET.
Selvom strukturer er ikke-standardiserede objekter, har de meget kapacitet i VB.NET. Du kan kode metoder, egenskaber og endda begivenheder og begivenhedshåndterere i strukturer, men du kan også bruge mere forenklet kode, og fordi de er værdityper, kan behandlingen være hurtigere. For eksempel kan du kode om strukturen ovenfor på denne måde:
Struktur Structure1
Sub mySub ()
MsgBox ("Dette er værdien af myPhone:" & myPhone)
Afslut under
Slutstruktur
Og brug det sådan:
Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub ()
Det er værd at din tid til at lege lidt med strukturer og lære, hvad de kan gøre. De er et af de underlige hjørner af VB.NET, der kan være en magisk kugle, når du har brug for det.