Freigeben über


Namespaces (Visual C# Express)

Aktualisiert: November 2007

Namespaces stellen eine Möglichkeit zum Organisieren der verschiedenen Typen in einem C#-Programm dar. Vom Konzept her ähneln sie Ordnern in einem Computerdateisystem. Analog zu Ordnern ermöglichen Namespaces eindeutige vollqualifizierte Namen für Klassen. Ein C#-Programm enthält einen oder mehrere Namespaces. Jeder einzelne Namespace wurde entweder von Ihnen (als Programmierer) oder im Rahmen einer vorher geschriebenen Klassenbibliothek definiert.

Der System-Namespace beispielsweise schließt die Console-Klasse ein, eine Klasse, die Methoden zum Lesen und Schreiben im Konsolenfenster enthält. Der System-Namespace enthält auch mehrere andere Namespaces, z. B. System.IO und System.Collections. .NET Framework besitzt allein mehr als achtzig Namespaces, jeder davon mit Tausenden Klassen: Namespaces werden verwendet, damit bei ähnlichen Typ- und Methodenbezeichnungen keine Verwirrung entsteht.

Wenn Sie eine Klasse außerhalb einer Namespacedeklaration schreiben, stellt der Compiler einen Standardnamespace für diese Klasse bereit.

Namespaceverknüpfungen

Zur Verwendung der WriteLine-Methode, die in der Console-Klasse definiert ist, die wiederum im System-Namespace enthalten ist, können Sie z. B. die folgende Codezeile verwenden:

System.Console.WriteLine("Hello, World!");

Sämtlichen in Console enthaltenen Methoden System voranstellen zu müssen, wäre eine äußerst lästige Aufgabe. Es bietet sich an, diesen Vorgang abzukürzen, indem Sie am Anfang der C#-Quelldatei die using-Direktive einfügen, z. B.:

using System;

Durch die Verwendung von using System; kann der System-Namespace vorausgesetzt werden. Demzufolge brauchen Sie anschließend nur noch Folgendes zu schreiben:

Console.WriteLine("Hello, World!");

Erstellen eigener Namespaces

Es ist üblich, bei der Arbeit an großen Programmen Namespaces zu verwenden. Eigene Namespaces bieten ein gewisses Maß an Kontrolle über ähnlich benannte Methoden und Typen. Angenommen, Sie schreiben eine Anwendung, die sowohl statistische Daten als auch Bilddateien von einem Datenträger lädt. Sie können z. B. zwei neue Namespaces mit den Namen Images und StatisticalData erstellen. Da Sie zwei separate Namespaces verwenden, sind alle Methodennamen in beiden Namespaces eindeutig, selbst wenn einzelne Klassen denselben Namen haben. Sie können also eine als FileHandling bezeichnete Klasse in beiden Namespaces haben, die beide über eine Methode mit dem Namen Load verfügen. Die gewünschte Klasse können Sie dann angeben, indem Sie entweder auf StatisticalData.FileHandling oder auf Images.FileHandling verweisen.

Eine gute Übung besteht darin, für jeden Namespace in Ihrem Visual C# Express-Projekt einen eigenen Ordner zu erstellen.

Beispiel

Im folgenden Beispiel werden zwei Namespaces definiert, die beide eine Klasse mit dem Namen FileHandling enthalten. Durch die Angabe des Namespaces ist es möglich, schnell die in ihnen enthaltenen Methoden und Klassen zu unterscheiden.

namespace StatisticalData
{
    class FileHandling
    {
        public void Load() {}  // code to load statistical data
    }
}

namespace Images 
{
    class FileHandling
    {
        public void Load() {}  // code to load an image file
    }
}

class Program
{
    static void Main()
    {
        StatisticalData.FileHandling data = new StatisticalData.FileHandling();
        data.Load();

        Images.FileHandling image = new Images.FileHandling();
        image.Load();
    }
}

Siehe auch

Konzepte

Einführung in C#

Klassen (Visual C# Express)

Referenz

Namespaces (C#-Programmierhandbuch)