Private Konstruktoren (C#-Programmierhandbuch)Private Constructors (C# Programming Guide)

Ein privater Konstruktor ist ein spezieller Instanzenkonstruktor.A private constructor is a special instance constructor. Er wird im Allgemeinen in Klassen verwenden, die nur statische Member enthalten.It is generally used in classes that contain static members only. Wenn eine Klasse einen oder mehrere private und keine öffentlichen Konstruktoren besitzt, können andere Klassen (außer geschachtelte Klassen) keine Instanzen dieser Klasse erstellen.If a class has one or more private constructors and no public constructors, other classes (except nested classes) cannot create instances of this class. Zum Beispiel:For example:

class NLog
{
    // Private Constructor:
    private NLog() { }

    public static double e = Math.E;  //2.71828...
}

Die Deklaration des leeren Konstruktors verhindert die automatische Erstellung eines Standardkonstruktors.The declaration of the empty constructor prevents the automatic generation of a default constructor. Beachten Sie, dass wenn Sie keinen Zugriffsmodifizierer mit dem Konstruktor verwenden, der Konstruktor standardmäßig weiterhin privat ist.Note that if you do not use an access modifier with the constructor it will still be private by default. Allerdings werden die privaten Modifizierer normalerweise ausdrücklich verwendet, um klarzustellen, dass die Klasse nicht instanziiert werden kann.However, the private modifier is usually used explicitly to make it clear that the class cannot be instantiated.

Private Konstruktoren werden verwendet, um das Erstellen von Instanzen einer Klasse zu verhindern, wenn es keine Instanzfelder oder -methoden wie die Math-Klasse gibt oder wenn eine Methode aufgerufen wird, um eine Instanz einer Klasse abzurufen.Private constructors are used to prevent creating instances of a class when there are no instance fields or methods, such as the Math class, or when a method is called to obtain an instance of a class. Wenn alle Methoden in der Klasse statisch sind, erwägen Sie es, die komplette Klasse statisch zu machen.If all the methods in the class are static, consider making the complete class static. Weitere Informationen finden Sie unter Statische Klassen und statische Klassenmember.For more information see Static Classes and Static Class Members.

BeispielExample

Folgendes ist ein Beispiel einer Klasse, die einen privaten Konstruktor verwendet.The following is an example of a class using a private constructor.

public class Counter
{
    private Counter() { }
    public static int currentCount;
    public static int IncrementCount()
    {
        return ++currentCount;
    }
}

class TestCounter
{
    static void Main()
    {
        // If you uncomment the following statement, it will generate
        // an error because the constructor is inaccessible:
        // Counter aCounter = new Counter();   // Error

        Counter.currentCount = 100;
        Counter.IncrementCount();
        Console.WriteLine("New count: {0}", Counter.currentCount);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: New count: 101

Beachten Sie, dass wenn Sie die Auskommentierung der folgenden Anweisung aus dem Beispiel aufheben, ein Fehler erzeugt wird, weil auf den Konstruktor aufgrund seiner Schutzebene nicht zugegriffen werden kann:Notice that if you uncomment the following statement from the example, it will generate an error because the constructor is inaccessible because of its protection level:

// Counter aCounter = new Counter();   // Error

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Klassen und StrukturenClasses and Structs
KonstruktorenConstructors
FinalizerFinalizers
privateprivate
publicpublic