26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!