| hoofdstuk |
17. 18. 19.  |
| onderwerp |
17.2. 18.1. Namespaces 18.2.  |
| rubrieken | - |
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
In grote projecten ( waar men met tientallen type definities te maken heeft ) kan het handig zijn om een meer hiërarchische structuur aan te brengen binnen deze type definities.
Vergelijk het met het filesysteem van de meeste besturingssystemen. In plaats van alle bestanden in een systeem op de root te plaatsen, gaat men folders creëren om daarin bestanden onder te brengen. Dit heeft onder andere volgende voordelen : - men kan door de hiërarchische structuur sneller bestanden terugvinden - men kan verschillende bestanden met dezelfde naam creëren zolang deze maar in een verschillende folder zitten
Hetzelfde kunnen we binnen onze code verwezenlijken, maar hier maken we geen gebruik van folders, maar van "namespaces". Toch zijn er op verschillende vlakken grote gelijkenissen met dergelijke folders in een filesysteem : - het creëert een hiërarchische structuur binnen de code - alles wat in dergelijke namespace gedefinieerd is moet een unieke naam hebben, maar 2 verschillende klassen zouden dezelfde naam kunnen hebben zolang ze maar in een verschillende namespace zitten - namespaces kunnen net als folder in elkaar genest worden - men kan op relatieve of absolute wijze verwijzen naar de inhoud van een namespace
Alle types worden minimaal op namespace-niveau gedefinieerd. Visual Studio : Bij het starten en uitkiezen van een naam van een nieuw project in Visual Studio wordt steeds een namespace ( "root namespace" ) gecreëerd. Deze root namespace krijgt automatisch dezelfde naam als de naam van het project, maar men kan deze naam ( in de project properties ) gaan aanpassen.
Alles wat vervolgens binnen het project wordt gedefinieerd staat in deze root namespace. Gezien er verschillende type definities dezelfde naam/identifier kunnen gebruiken, kan er verwarring ontstaan bij het verwijzen naar die identifier. Om deze verwarring tegen te gaan kan men de "fully-qualified-identifier" van dat type gaan gebruiken. De volledig naam van een bepaald type ( fully-qualified-identifier ) bestaat uit de identifier van het type zelf, voorafgegaan door de onderdelen ( namespaces ) waarin het zich bevindt.
Zolang men zich binnen een bepaalde namespace bevindt kan men rechtstreeks verwijzen naar de inhoud van die namespace ( op relatieve wijze ). Bevindt men zich echter buiten die namespace, dan zal men op zen minst de namespace moeten vermelden waarin het type is geplaatst.
Bijkomend kunnen we zelf eigen namespaces gaan toevoegen aan de hand van Namespace. Namespace <identifier-van-de namespace> <inhoud-van-de namespace> End NameSpace In onderstaand voorbeeld wordt gedemonstreerd hoe je verschillend type kunt creëren met dezelfde identifier, en hoe je op relatieve of absolute wijze kunt verwijzen naar dergelijke types. Visual Basic 2010 Broncode Class Person End ClassClass Example1 Public Shared Sub Main() Dim person1 As Person = New Person Dim person2 As ConsoleApplication1. Person = _ New ConsoleApplication1. Person Dim person3 As Persons. Person = New Persons. Person Dim person4 As ConsoleApplication1.Persons. Person = _ New ConsoleApplication1.Persons. Person End SubEnd ClassNamespace Persons Class Person End Class Class Example2 Public Shared Sub Main() Dim person5 As Person = New Person Dim person6 As ConsoleApplication1. Person = _ New ConsoleApplication1. Person Dim person7 As Persons. Person = New Persons. Person Dim person8 As ConsoleApplication1.Persons. Person = _ New ConsoleApplication1.Persons. Person End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
ConsoleApplication1 is hier de naam van de root namespace.
- person1 wordt gedeclareerd van type-1 ( relatieve verwijzing ) - person2 wordt gedeclareerd van type-1 ( absolute verwijzing ) - person3 wordt gedeclareerd van type-2 ( relatieve verwijzing ) - person4 wordt gedeclareerd van type-2 ( absolute verwijzing ) - person5 wordt gedeclareerd van type-2 ( relatieve verwijzing ) - person6 wordt gedeclareerd van type-1 ( absolute verwijzing ) - person7 wordt gedeclareerd van type-2 ( relatieve verwijzing ) - person8 wordt gedeclareerd van type-2 ( absolute verwijzing )
Ook de klassenbibliotheek van het .NET Framework ( FCL ) bevat tal van namespaces.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
| hoofdstuk |
17. 18. 19.  |
| onderwerp |
17.2. 18.1. Namespaces 18.2.  |
| broncode |
Download Namespaces.vb of Namespaces.cs |
| datum |
laatst gewijzigd op dinsdag 23 september 2008, laatst gepubliceerd op zondag 31 juli 2011 |
|