Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een privéconstructor is een speciale instantieconstructor. Het wordt over het algemeen gebruikt in klassen die alleen statische leden bevatten. Als een klasse een of meer privéconstructors en geen openbare constructors heeft, kunnen andere klassen (behalve ingesloten klassen) geen exemplaren van deze klasse maken. Voorbeeld:
class NLog
{
    // Private Constructor:
    private NLog() { }
    public static double e = Math.E;  //2.71828...
}
De declaratie van de lege constructor voorkomt het automatisch genereren van een parameterloze constructor. Houd er rekening mee dat als u geen toegangsaanpassing met de constructor gebruikt, deze standaard nog steeds privé is. De privé- modifier wordt echter meestal expliciet gebruikt om duidelijk te maken dat de klasse niet kan worden geïnstantieerd.
Privéconstructors worden gebruikt om te voorkomen dat exemplaren van een klasse worden gemaakt wanneer er geen instantievelden of methoden zijn, zoals de Math-klasse, of wanneer een methode wordt aangeroepen om een exemplaar van een klasse te verkrijgen. Als alle methoden in de klasse statisch zijn, kunt u overwegen om de volledige klasse statisch te maken. Zie statische klassen en statische klasseledenvoor meer informatie.
Voorbeeld
Hier volgt een voorbeeld van een klasse met behulp van een privé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: {Counter.currentCount}");
        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: New count: 101
Als u de volgende instructie in het voorbeeld van commentaar ontdoet, wordt er een fout gegenereerd omdat de constructor niet toegankelijk is vanwege zijn beschermingsniveau.
// Counter aCounter = new Counter();   // Error