Share via


Private Constructors (C#-programmeerhandleiding)

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 geneste 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 klasseleden voor meer informatie.

Opmerking

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: {0}", 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 opmerkingen bij de volgende instructie uit het voorbeeld verwijdert, wordt er een fout gegenereerd omdat de constructor niet toegankelijk is vanwege het beveiligingsniveau:

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

Zie ook