Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Et namespace tjener mest til at etablere et logisk hierarki så man kan finde rundt i tusindvis af<br />
klasser. I ’System.Windows.Forms’ er System det ydre namespace, Windows et under namespace<br />
under System og Forms et under namespace under Windows.<br />
Sætningen using System tjener til at koden kan skrives nemmere – og til at kompileren kan vide<br />
hvilket namespace dvs hvilke klasser og metoder jeg taler om.<br />
Et namespace kan være defineret i en enkelt fil eller – hvis der er tale om mere professionelle<br />
applikationer - i mange filer.<br />
Et namespace er en logisk struktur, IKKE en fysisk struktur. Fx findes der ikke noget namespace<br />
mscorlib eller ’using mscorlib’ men der findes en DLL fil (en fysisk fil) mscorlib.dll! Det logiske<br />
og fysiske dækker ikke altid hinanden.<br />
Namespaces er kun ’noget som vi ser’ – set fra compilerens synspunkt er der ikke noget som hedder<br />
namespaces. Fx klassen ’Form’: Set fra .NET systemets synspunkt hedder denne klasse simpelthen<br />
’System.Windows.Forms.Form’ !!! Det er kun os, der opfatter det sådan, at klassen hedder Form<br />
men ligger i det og det namespace!<br />
En ’using System;’ er et ’præ processor direktiv’ som gør at systemet indsætter ordet ’System.’<br />
foran vores linje: ’Console.WriteLine()’ så at den linje kompileren rent faktisk arbejder med<br />
kommer til at lyde: ’System.Console.WriteLine();’.<br />
Det er vigtigt at huske, at en ’using System.Xml;’ er en ’typografisk’ genvej – for selve DLL filen<br />
bliver IKKE refereret (inddraget) fordi jeg skriver en using!!<br />
På en vis måde svarer et namespace til en mappe på harddisken og en klasse til en fil – forstået på<br />
den måde at to filer godt kan have det samme navn, HVIS de ligger i to forkellige mapper! Men<br />
bortset fra denne analogi har et namespace ikke noget at gøre med en fysisk struktur.<br />
Java anvender også namespaces, men i Java er et namespace bundet – som en fysisk struktur - til<br />
en mappe på computeren! Namespaces findes også i C++.<br />
Namespaces gør genbrug og anvendelse af komponenter meget nemmere i koden. Fx kan jeg have<br />
anskaffet mig en ’fremmed’ DLL fil som indeholder en klasse ArrayList. På grund af namespaces<br />
kan jeg godt både bruge denne ’fremmede’ ArrayList og .NETs egen ArrayList samtidigt! Det<br />
eneste jeg skal gøre er at angive den fulde sti til klassen fx sådan – hvis vi forudsætter et firmanavn<br />
som namespace:<br />
System.Collections.ArrayList dotnetliste;<br />
SuperDigital.ArrayList sdListe;<br />
Namespaces skal dels skabe en logisk orden i klasserne, dels løse det problem at vi kan have<br />
forskellige klasser med præcist samme navn. Hvis følgende kode forsøges kompileres, giver det en<br />
fejl og koden kan ikke kompileres:<br />
// illustrerer name clash og namespace: fx Timer: