Namensraum

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche

Namensräume oder Namespaces stellen eine Möglichkeit dar, ein Projekt zu strukturieren. Dabei werden unterschiedliche Komponenten eines Programms in einem Namensraum zusammengefasst. Der Vorteil von Namespaces besteht darin, dass es in zwei Namespaces Klassen mit demselben Namen geben kann, ohne dass Konflikte verursacht werden. Des Weiteren bieten Namespaces die Möglichkeit der Schachtelung, was die Strukturierung um ein Vielfaches erleichtert.

Das folgende Beispiel soll die Verwendung von Namespaces verdeutlichen:

namespace FileHandling
{
   namespace FileIO
   {
      class FileSearcher { ... }
      class FileDeleter { ... }
   }

   namespace FileAttributes
   {
      class FileAttributeConnector { ... }
   }

   class StandardFileHandler { ... }
}

namespace MyNamespace1
{
   Class Class1
   {
      void DoSomething()
      {
         FileHandling.FileIO.FileSearcher search = new FileHandling.FileIO.FileSearcher();
         FileHandling.StandardFileHandler fileHandler = new FileHandling.StandardFileHandler();
         FileHandling.FileIO.FileDeleter deleter = new FileHandling.FileIO.FileDeleter();
      }
   }
}

Durch Verwendung des using-Schlüsselworts können Klassen in anderen Namespaces auch ohne die Angabe ihrer Namensräume verwendet werden:

using FileHandling;
using FileHandling.FileIO;

namespace MyNamespace2
{
   class Class1
   {
      void DoSomething()
      {
         FileSearcher search = new FileSearcher();
         StandardFileHandler fileHandler = new StandardFileHandler();
         FileDeleter deleter = new FileDeleter();
      }
   }
}

Kommt es allerdings zu Ambiguitäten, also zu der Verwendung eines gleichen Namens aus zwei Namespaces, muss der Namespace der Referenzierung angegeben werden, damit die Eindeutigkeit gewahrt bleibt.