Module, structuri și clase

click fraud protection

Există doar trei moduri de organizare a VB.NET cerere.

  • module
  • structuri
  • Clase

Dar majoritatea articolelor tehnice presupun că știți deja toate despre ele. Dacă sunteți unul dintre numeroșii care mai au câteva întrebări, puteți doar să citiți bucățile confuze și să încercați să le dați seama oricum. Și dacă aveți un mult din timp, puteți începe să căutați Microsoft documentație:

  • "Un modul este un fișier executabil portabil, cum ar fi type.dll sau application.exe, format din una sau mai multe clase și interfețe."
  • "O declarație Class definește un nou tip de date."
  • "Instrucțiunea Structura definește un tip de valoare compozit pe care îl puteți personaliza."

Chiar atunci. Alte intrebari?

Pentru a fi puțin mai corecți cu Microsoft, acestea au pagini și pagini (și mai multe pagini) de informații despre toate acestea pe care le puteți parcurge. Și trebuie să fie cât mai exacti pentru că au stabilit standardul. Cu alte cuvinte, documentația Microsoft citește uneori ca o carte de legi, deoarece este o carte de legi.

instagram viewer

Dar dacă înveți doar .NET, poate fi foarte confuz! Trebuie să începi de undeva. Înțelegerea celor trei moduri fundamentale prin care poți scrie cod în VB.NET este un loc bun pentru a începe.

Poti sa scrii VB.NET folosind oricare dintre aceste trei forme. Cu alte cuvinte, puteți crea o Aplicație de consolă în VB.NET Express și scrieți:

Modulul modul 1
Sub principal ()
MsgBox ("Acesta este un modul!")
Sub final
Modul final
Clasa Clasa1
Sub principal ()
MsgBox ("Aceasta este o clasă")
Sub final
Clasa finală
Structura Structură1
Dim myString As String
Sub principal ()
MsgBox ("Aceasta este o structură")
Sub final
Structura finală

Acest lucru nu face orice sens ca program, desigur. Ideea este că nu primiți o eroare de sintaxă, deci este "legal" Cod VB.NET.

Aceste trei forme sunt singura cale de a codifica rădăcina albinei regine a tuturor .NET: obiectul. Singurul element care întrerupe simetria celor trei forme este afirmația: Dim myString As String. Aceasta are legătură cu o structură care este un „tip de date compozite” așa cum afirmă Microsoft în definiția lor.

Un alt lucru de observat este că toate cele trei blocuri au un Sub principal () în ele. Unul dintre principalii fundamentali ai OOP este de obicei numit încapsulare. Acesta este efectul „cutie neagră”. Cu alte cuvinte, ar trebui să poți trata fiecare obiect în mod independent și asta include utilizarea subrutinelor numite identic dacă vrei.

Clase

Clasele sunt locul „potrivit” pentru a începe, deoarece Microsoft remarcă, „O clasă este un bloc fundamental al programării orientate pe obiecte (OOP)." De fapt, unii autori tratează modulele și structurile ca doar un fel de clase speciale. O clasă este mai mult orientată pe obiect decât un modul, deoarece este posibil să instantiat (faceți o copie a) unei clase, dar nu a unui modul.

Cu alte cuvinte, puteți codifica ...

Clasa publică Form1
Sub Formular privat1_Load (_
ByVal expeditor ca sistem. Obiect, _
Sistemul ByVal e As. EventArgs) _
Gestionează MyBase. Sarcină
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
Sub final
Clasa finală

(Instanțarea clasei este accentuată.)

Nu contează dacă clasa propriu-zisă, în acest caz, ...

Clasa publică Clasa1
SubclaseSub ()
MsgBox ("Aceasta este o clasă")
Sub final
Clasa finală

... se află într-un fișier de unul singur sau face parte din același fișier cu Form1 cod. Programul rulează exact același mod. (Observa asta Form1 este și o clasă.)

Puteți, de asemenea, scrie cod de clasă care se comportă la fel ca un modul, adică fără a-l instantana. Aceasta se numește a Impartit clasă. Articolul „Static” (adică „Partajat”) versus Tipuri dinamice din VB.NET explică acest lucru într-un detaliu mult mai detaliat.

Un alt fapt despre clase ar trebui să fie, de asemenea, reținut. Membrii (proprietățile și metodele) clasei există doar în timp ce instanța există. Numele pentru aceasta este de definire a domeniului. Adică domeniu a unei instanțe a unei clase este limitată. Codul de mai sus poate fi schimbat pentru a ilustra acest punct în acest fel:

Clasa publică Form1
Sub Formular privat1_Load (_
ByVal expeditor ca sistem. Obiect, _
Sistemul ByVal e As. EventArgs) _
Gestionează MyBase. Sarcină
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Nimic
myNewClass. ClassSub ()
Sub final
Clasa finală

Când a doua myNewClass. ClassSub () declarația este executată, a NullReferenceException eroarea este aruncată deoarece ClassSub membru nu există.

module

În VB 6, era comun să vezi programe unde cea mai mare parte a codului se afla într-un modul (A .BAS, fișier, mai degrabă decât, de exemplu, într-o Formă fișier cum ar fi Form1.frm.) În VB.NET, atât modulele cât și clasele sunt în .VB fișiere. Principalul motiv pentru care modulele sunt incluse în VB.NET este de a oferi programatorilor o modalitate de a-și organiza sistemele prin punerea codului în diferite locuri pentru a regla amploarea și accesul acestora cod. (Adică, cât timp există membri ai modulului și ce alte coduri pot face referire și utilizarea membrilor.) Uneori, este posibil să doriți să introduceți codul în module separate doar pentru a ușura munca.

Toate modulele VB.NET sunt Impartit pentru că nu pot fi inițiate (vezi mai sus) și pot fi marcate prieten sau Public astfel încât acestea pot fi accesate fie în cadrul aceluiași ansamblu sau ori de câte ori sunt trimise.

structuri

Structurile sunt cele mai puțin înțelese dintre cele trei forme ale obiectelor. Dacă am discuta despre „animale” în loc de „obiecte”, structura ar fi o Aardvark.

Marea diferență între o structură și o clasă este că o structură este a tipul valorii iar o clasă este a tip de referință.

Ce inseamna asta? Mă bucur că ai întrebat.

Un tip de valoare este un obiect care este stocat direct în memorie. Un Întreg este un bun exemplu de tip valoric. Dacă ați declarat un Întreg în programul tău astfel ...

Dim myInt as Integer = 10

... și ați verificat locația de memorie stocată în Myint, ai găsi valoarea 10. De asemenea, vedeți acest lucru descris ca fiind „alocat pe stivă”.

Stiva și grămada sunt pur și simplu diferite moduri de gestionare a utilizării memoriei computerului.

Un tip de referință este un obiect în care locația obiectului este stocată în memorie. Așadar, găsirea unei valori pentru un tip de referință este întotdeauna o căutare în doi pași. A Şir este un bun exemplu de tip de referință. Dacă ați declarat a Şir asa ...

Dim myString as String = "Acesta este myString"

... și ați verificat locația de memorie stocată în myString, veți găsi o altă locație de memorie (numită a ac indicator - acest mod de a face lucrurile este chiar inima limbajelor în stil C). Va trebui să mergeți în acea locație pentru a găsi valoarea „Acesta este myString”. Acest lucru este adesea numit „a fi alocat pe grămadă”. Stiva și grămada

Unii autori spun că tipurile de valoare nu sunt chiar obiecte și doar tipurile de referință pot fi obiecte. Este cu siguranță adevărat că caracteristicile obiectului sofisticat ca moștenirea și încapsulare sunt posibile numai cu tipuri de referință. Dar am început acest întreg articol spunând că există trei forme pentru obiecte, așa că trebuie să accept faptul că structurile sunt un fel de obiect, chiar dacă sunt obiecte non-standard.

Originea programării structurilor se întoarce la limbaje orientate către fișiere precum Cobol. În aceste limbi, datele au fost procesate în mod normal ca fișiere plane secvențiale. „Câmpurile” dintr-o înregistrare din fișier au fost descrise printr-o secțiune „definiția datelor” (uneori numită „layout-ul înregistrării” sau „copybook”). Deci, dacă o înregistrare din fișier conține:

1234567890ABCDEF9876

Singura modalitate de a ști că „1234567890” a fost un număr de telefon, „ABCDEF” a fost un ID și 9876 a fost 98,76 USD a fost prin definiția datelor. Structurile vă ajută să realizați acest lucru în VB.NET.

Structura Structura1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Structura finală

Deoarece a Şir este un tip de referință, este necesar să păstrați lungimea la fel cu VBFixedString atribut pentru înregistrări cu lungime fixă. Puteți găsi o explicație extinsă a acestui atribut și atribute în general în articolul Atribute în VB .NET.

Cu toate că structurile sunt obiecte non-standard, acestea au foarte multe capacități în VB.NET. Puteți coda metode, proprietăți și chiar evenimente și gestionări de evenimente în structuri, dar puteți utiliza coduri mai simplificate și, deoarece sunt tipuri de valori, procesarea poate fi mai rapidă. De exemplu, puteți recoda structura de mai sus astfel:

Structura Structura1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Sub mySub ()
MsgBox ("Aceasta este valoarea myPhone:" și myPhone)
Sub final
Structura finală

Și folosiți-o astfel:

Dim MyStruct ca structură1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Merită să-ți faci timp să te joci puțin cu structuri și să înveți ce pot face. Sunt unul dintre colțurile ciudate ale VB.NET care poate fi un glonț magic atunci când ai nevoie.

instagram story viewer