Namespaces gebruiken in VB.NET

De meest gebruikelijke manier waarop VB.NET-naamruimten door de meeste worden gebruikt programmeurs is om de compiler te vertellen welke .NET Framework-bibliotheken nodig zijn voor een bepaald programma. Wanneer u een "sjabloon" voor uw project kiest (zoals "Windows Forms Application"), is dit een van de dingen die u kiest, is de specifieke set naamruimten waarnaar automatisch in uw wordt verwezen project. Dit maakt de code in die naamruimten beschikbaar voor uw programma.

Enkele van de naamruimten en de werkelijke bestanden waarin ze zich bevinden voor een Windows Forms-toepassing zijn:

Systeem> in System.dll
Systeem. Gegevens> in systeem. Data.dll
Systeem. Implementatie> Systeem. Deployment.dll
Systeem. Tekening> Systeem. Drawing.dll
Systeem. Ramen. Formulieren> Systeem. Ramen. Forms.dll

U kunt de naamruimten en referenties voor uw project zien (en wijzigen) in de projecteigenschappen onder de Referenties tab.

Door deze manier van denken over naamruimten lijken ze precies hetzelfde als "codebibliotheek", maar dat is slechts een deel van het idee. Het echte voordeel van naamruimten is organisatie.

instagram viewer

De meesten van ons krijgen niet de kans om een ​​nieuwe naamruimtehiërarchie op te zetten, omdat dit over het algemeen slechts één keer 'in het begin' wordt gedaan voor een grote en gecompliceerde codebibliotheek. Maar hier leert u hoe u de naamruimten interpreteert die u in veel organisaties moet gebruiken.

Wat naamruimten doen

Met naamruimten kunnen tienduizenden .NET Framework-objecten en alle objecten die VB-programmeurs in projecten maken, ook worden georganiseerd, zodat ze niet botsen.

Als u bijvoorbeeld .NET zoekt naar een Kleur object, je vindt er twee. Er is een Kleur object in beide:

Systeem. Tekening
Systeem. Ramen. Media

Als u een toevoegt Invoer statement voor beide namespaces (een referentie kan ook nodig zijn voor de projecteigenschappen) ...

Importeert systeem. Tekening
Importeert systeem. Ramen. Media

... dan een uitspraak als ...

Dim een ​​als kleur

... wordt gemarkeerd als een fout met de opmerking 'Kleur is dubbelzinnig' en .NET wijst erop dat beide naamruimten een object met die naam bevatten. Dit soort fouten wordt een "naambotsing" genoemd.

Dit is de echte reden voor "naamruimten" en het is ook de manier waarop naamruimten worden gebruikt in andere technologieën (zoals XML). Naamruimten maken het mogelijk om dezelfde objectnaam te gebruiken, zoals Kleur, wanneer de naam past en de zaken nog steeds georganiseerd houden. Je zou een kunnen definiëren Kleur object in uw eigen code en houd deze gescheiden van die in .NET (of de code van andere programmeurs).

Naamruimte MyColor
Public Class Color
Subkleur ()
' Doe iets
Einde Sub
Eindklasse
Einde naamruimte

U kunt ook de Kleur maak ergens anders in uw programma bezwaar:

Dim c As New MyColor. Kleur
c. Kleur()

Houd er rekening mee dat elk project zich in een naamruimte bevindt voordat u op enkele andere functies ingaat. VB.NET gebruikt de naam van uw project (Windows-toepassing 1 voor een standaardformulierenapplicatie als u deze niet wijzigt) als de standaardnaamruimte. Maak hiervoor een nieuw project (we hebben de naam gebruikt NSProj en bekijk het hulpmiddel Objectbrowser):

  1. Klik Hier om de illustratie weer te geven
  2. Klik op de Terug knop in uw browser om terug te keren

De Objectbrowser toont uw nieuwe projectnaamruimte (en de automatisch gedefinieerde objecten erin) samen met de .NET Framework-naamruimten. Dit vermogen van VB.NET om uw objecten gelijk te maken aan .NET-objecten is een van de sleutels tot de kracht en flexibiliteit. Dit is de reden waarom Intellisense uw eigen objecten toont zodra u ze definieert.

Laten we een nieuw project definiëren (we hebben het onze genoemd) NewNSProj in dezelfde oplossing (gebruik het dossier > Toevoegen > Nieuw project ...) en codeer een nieuwe naamruimte in dat project. En om het nog leuker te maken, laten we de nieuwe naamruimte in een nieuwe module plaatsen (we hebben het een naam gegeven) NewNSMod). En omdat een object als een klasse moet worden gecodeerd, hebben we ook een klassenblok (genaamd) toegevoegd NewNSObj). Hier is de code en Solution Explorer om te laten zien hoe het in elkaar past:

  1. Klik Hier om de illustratie weer te geven
  2. Klik op de Terug knop in uw browser om terug te keren

Aangezien uw eigen code 'net als Framework-code' is, is het noodzakelijk om een ​​verwijzing naar toe te voegen NewNSMod in NSProj om het object in de naamruimte te gebruiken, ook al zitten ze in dezelfde oplossing. Zodra dat is gebeurd, kunt u een object aangeven NSProj op basis van de methode in NewNSMod. U moet ook het project "bouwen" zodat er een reëel object bestaat om naar te verwijzen.

Gedimd als nieuw NewNSProj. AVBNS.NewNSMod. NewNSObj
O. AVBNSMethod ()

Dat is nogal een Afm verklaring wel. We kunnen dat verkorten door een Invoer verklaring met een alias.

Importeert NS = NewNSProj. AVBNS.NewNSMod. NewNSObj
...
Dim o As New NS
O. AVBNSMethod ()

Als u op de knop Uitvoeren klikt, wordt de weergegeven MsgBox uit de AVBNS-naamruimte: "Hé! Het werkte!"

Wanneer en waarom naamruimten gebruiken

Alles is tot nu toe echt zo geweest syntaxis - de codering regels die u moet volgen bij het gebruik van naamruimten. Maar om echt te profiteren, heb je twee dingen nodig:

  • Een vereiste voor naamruimteorganisatie in de eerste plaats. Je hebt meer nodig dan alleen een "Hello World" -project voordat de organisatie van naamruimten zijn vruchten begint af te werpen.
  • Een plan om ze te gebruiken.

In het algemeen, Microsoft raadt u aan de code van uw organisatie te ordenen met een combinatie van uw bedrijfsnaam en de productnaam.

Dus als u bijvoorbeeld de Chief Software Architect voor Dr. No's Nose Knows Plastic Surgery bent, wilt u misschien uw naamruimten organiseren zoals ...

DRNee
Overleg plegen
ReadTheirWatchNChargeEm
TellEmNuthin
Chirurgie
ElephantMan
MyEyeLidsRGone

Dit is vergelijkbaar met de organisatie van .NET ...

Voorwerp
Systeem
Kern
IO
Linq
Gegevens
Odbc
SQL

De naamruimten met meerdere niveaus worden bereikt door simpelweg de naamruimteblokken te nesten.

Naamruimte DRNo
Naamruimte-operatie
Naamruimte MyEyeLidsRGone
'VB-code
Einde naamruimte
Einde naamruimte
Einde naamruimte

of

Naamruimte DRNo. Chirurgie. MyEyeLidsRGone
'VB-code
Einde naamruimte
instagram story viewer