Namespaces und Assemblies in C#
Erlernen Sie die Konzepte von Namespaces und Assemblies in C#, um Code zu strukturieren und Abhängigkeiten korrekt zu verwalten.
In der C#- und .NET-Welt werden die Konzepte Namespace (Namensraum) und Assembly (Assembly/Programmdatei) verwendet, um Code übersichtlich, verwaltbar und wiederverwendbar zu machen. Diese Strukturen ermöglichen die Aufteilung von Code, verhindern Namenskonflikte und erleichtern die gemeinsame Nutzung von Komponenten, auch in großen Projekten.
Namespace
Ein Namespace gruppiert Klassen, Schnittstellen, Enums und andere Typen in einer logischen Einheit. Dadurch können Klassen mit demselben Namen konfliktfrei in verschiedenen Namespaces verwendet werden.
namespace ProjektA.Models
{
class Benutzer
{
public string Name { get; set; }
}
}
namespace ProjektB.Models
{
class Benutzer
{
public string VollerName { get; set; }
}
}
In diesem Beispiel gibt es zwei verschiedene Benutzer-Klassen.
Mit Namespaces wird darauf zugegriffen als
ProjektA.Models.Benutzer oder ProjektB.Models.Benutzer.
using-Anweisung
Die using-Anweisung ermöglicht den direkten Zugriff auf Typen innerhalb eines bestimmten Namespaces.
using ProjektA.Models;
class Program
{
static void Main()
{
Benutzer b = new Benutzer();
b.Name = "Hans";
Console.WriteLine(b.Name);
}
}
Hier kann anstelle von ProjektA.Models.Benutzer einfach Benutzer geschrieben werden.
Assembly
Ein Assembly ist die verteilbare Einheit von kompiliertem .NET-Code.
Es hat in der Regel die Endung .dll (Dynamic Link Library) oder .exe (ausführbare Datei).
- DLL: Kann nicht eigenständig ausgeführt werden, wird von anderen Projekten referenziert.
- EXE: Ausführbare Anwendungen, die in der Regel einen Einstiegspunkt (
Main) enthalten.
Inhalt eines Assemblys
Ein Assembly enthält nicht nur Code, sondern auch Metadaten (z. B. Versionsinformationen) und Ressourcendateien.
- Manifest: Definiert die Identität des Assemblys (Name, Version, Kultur).
- MSIL-Code: Kompilierter Zwischensprachencode.
- Metadaten: Informationen über Klassen, Methoden und Eigenschaften.
- Ressourcen: Zusätzliche Dateien wie Bilder, Symbole, XML usw.
TL;DR
- Namespace: Organisiert Code in logische Gruppen.
- Assembly: Verteilbare Einheit von kompiliertem Code (.dll, .exe).
- Namespace → verhindert Namenskonflikte und sorgt für Struktur.
- Assembly → enthält Code, Metadaten und Ressourcen in einem einzigen Paket.