C# Singleton

c# singleton

Vielleicht hast du schonmal von dem Begriff “Singleton” gehört, hast aber keine Ahnung, was es bedeutet. Keine Sorge, du bist nicht alleine! In diesem Artikel werfen wir einen genaueren Blick darauf, was ein C# Singleton ist, warum man es verwenden könnte und wie man es in C# erstellt.

Was ist ein Singleton?

Ein Singleton ist ein Entwurfsmuster (Design Pattern), das sicherstellt, dass eine Klasse nur zu einem bestimmten Zeitpunkt eine Instanz hat. Das bedeutet, dass, wenn du versuchst, mehrere Instanzen dieser Klasse zu erstellen, sie alle auf dasselbe Objekt verweisen werden. Dies kann in Situationen nützlich sein, in denen du nur eine Instanz eines Objekts erstellen und global zugänglich machen möchtest.

Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#. Egal, ob du C# als Hobby, für die Uni oder für eine neue Karriere lernen möchtest, mit diesem Kurs lernst du C# schnell, einfach und professionell.
Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#.

Warum sollte ich einen C# Singleton verwenden?

Es gibt ein paar Gründe, warum du in deinem C#-Code ein Singleton verwenden möchtest:

Globaler Zugriff: Wenn du sicherstellen möchtest, dass ein Objekt global zugänglich ist, ist ein Singleton eine gute Wahl. Zum Beispiel könntest du ein Singleton für eine Logging-Klasse verwenden, auf die du von überall in deinem Code zugreifen möchtest.

Ressourcenverwaltung: Ein Singleton kann auch nützlich sein, um Ressourcen zu verwalten, die teuer zu erstellen sind, wie zum Beispiel Datenbankverbindungen. Indem du nur eine Instanz des Objekts zu einem bestimmten Zeitpunkt erstellen lässt, sparst du Ressourcen und verbesserst die Leistung.

Statusverwaltung: Ein Singleton kann auch verwendet werden, um den Status einer Anwendung zu verwalten. Zum Beispiel könntest du ein Singleton verwenden, um Benutzereinstellungen oder Einstellungen zu speichern, die von mehreren Teilen des Codes aufgerufen werden müssen.

Wie man ein Singleton in C# erstellt

Ein Singleton in C# zu erstellen ist relativ einfach. Hier ist ein Beispiel für eine einfache Singleton-Klasse:

public class Singleton
{
    private static Singleton _instance;

    private Singleton()
    {
    }

    public static Singleton Instanz
    {
        get
        {
            if (_instance == null)
            {
                _instance = new Singleton();
            }
            return _instance;
        }
    }
}

In dem oben stehen Code wird bei ersten Aufruf der statischen Instanz ein Singleton Objekt initialisiert. Von da an wird nur noch diese eine Instanz geteilt und verwendet.

Es ist wichtig zu beachten, dass diese Implementierung nicht threadsicher ist und daher in Umgebungen verwendet werden sollte, in denen keine parallele Verarbeitung stattfindet oder in denen dieses Risiko akzeptiert wird.

C# Singleton aber thread-safe

Mit folgendem Code kannst du ein C# Singleton erstellen, der thread-safe ist und somit auch in unterschiedlichen Threads geteilt und verwendet wird:

public class Singleton
{
    private static Singleton _instance;
    private static readonly object _lock = new object();

    private Singleton()
    {
    }

    public static Singleton Instanz
    {
        get
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new Singleton();
                }
                return _instance;
            }
        }
    }
}

In diesem Beispiel definieren wir eine Singleton-Klasse und eine private statische Variable _instance, die die Singleton-Instanz halten wird, und eine private statische readonly-Objektvariable _lock, die wir für die Threadsynchronisierung verwenden werden.

Die Eigenschaft Instanz verwendet eine lock-Anweisung, um sicherzustellen, dass nur ein Thread die Instanz zu einem bestimmten Zeitpunkt erstellen kann und überprüft auch, ob die _instance-Variable null ist, bevor eine neue Instanz erstellt wird.

Wenn du noch mehr darüber lesen willst, dann schau mal hier nach.

✅ Lerne alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Softwareentwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Der C# Grundlagenkurs
Kostenlos
Overlay Image
Der C# Grundlagenkurs
Kostenlos
✅ Alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Entwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Overlay Image