Het trefwoord namespace
Het namespace
trefwoord wordt gebruikt om een bereik te declareren dat een set gerelateerde objecten bevat. U kunt een naamruimte gebruiken om code-elementen te organiseren en wereldwijd unieke typen te maken.
namespace SampleNamespace
{
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
namespace Nested
{
class SampleClass2 { }
}
}
Met declaraties voor bestandsbereiken kunt u declareren dat alle typen in een bestand zich in één naamruimte bevinden. Het volgende voorbeeld is vergelijkbaar met het vorige voorbeeld, maar maakt gebruik van een naamruimtedeclaratie met bestandsbereik:
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
Instructies gebruiken in naamruimten met bestandsbereik
Wanneer u bestandsspecifieke naamruimtengebruikt, beïnvloedt de plaatsing van using
verklaringen hun bereik binnen het bestand. Naamruimten met bestandsbereik lager dan de equivalente traditionele naamruimtedeclaratie die eindigt met een haakje sluiten aan het einde van het bestand. Dit gedrag bepaalt waar using
richtlijnen als volgt worden toegepast:
- Als de
using
-instructies vóór de declaratie van de naamruimte met bestandsbereik worden geplaatst, worden ze behandeld als buiten de naamruimte en worden ze geïnterpreteerd als volledig gekwalificeerde naamruimten. - Als de
using
-instructies worden geplaatst na de declaratie van de naamruimte met bestandsbereik, worden deze binnen de naamruimte zelf geplaatst.
Voorbeeld:
// This using is outside the namespace scope, so it applies globally
using System;
namespace SampleNamespace; // File-scoped namespace declaration
// This using is inside the namespace scope
using System.Text;
public class SampleClass
{
// Class members...
}
In het voorgaande voorbeeld is System
wereldwijd toegankelijk, terwijl System.Text
alleen van toepassing is binnen SampleNamespace
.
Het voorgaande voorbeeld bevat geen geneste naamruimte. Naamruimten met bestandsbereik kunnen niet meer naamruimtedeclaraties bevatten. U kunt geen genest naamruimte of een tweede naamruimte op bestandsniveau declareren.
namespace SampleNamespace;
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
namespace AnotherNamespace; // Not allowed!
namespace ANestedNamespace // Not allowed!
{
// declarations...
}
Binnen een naamruimte kunt u nul of meer van de volgende typen declareren:
- class
- interface
- Struct
- opsomming
- delegeren
- geneste naamruimten kunnen worden gedeclareerd, behalve in declaraties van bestandsbereiken
De compiler voegt een standaardnaamruimte toe. Deze niet-benoemde naamruimte, ook wel de algemene naamruimte genoemd, is aanwezig in elk bestand. Het bevat declaraties die niet zijn opgenomen in een gedeclareerde naamruimte. Elke id in de globale naamruimte is beschikbaar voor gebruik in een benoemde naamruimte.
Naamruimten hebben impliciet openbare toegang. Zie Toegangsmodifiers voor een bespreking van de toegangsmodifiers die u kunt toewijzen aan elementen in een naamruimte.
Het is mogelijk om een naamruimte in twee of meer declaraties te definiëren. In het volgende voorbeeld worden bijvoorbeeld twee klassen gedefinieerd als onderdeel van de MyCompany
naamruimte:
namespace MyCompany.Proj1
{
class MyClass
{
}
}
namespace MyCompany.Proj1
{
class MyClass1
{
}
}
In het volgende voorbeeld ziet u hoe u een statische methode aanroept in een geneste naamruimte.
namespace SomeNameSpace
{
public class MyClass
{
static void Main()
{
Nested.NestedNameSpaceClass.SayHello();
}
}
// a nested namespace
namespace Nested
{
public class NestedNameSpaceClass
{
public static void SayHello()
{
Console.WriteLine("Hello");
}
}
}
}
// Output: Hello
C#-taalspecificatie
Zie de sectie Naamruimten van de C#-taalspecificatie voor meer informatie. Zie de functiespecificatie voor meer informatie over declaraties van bestandsbereiken.