Udostępnij za pośrednictwem


Prywatne konstruktory (C# Programming Guide)

Prywatne konstruktora jest konstruktora instancji specjalne.Zazwyczaj jest używana w klasach, które zawierają tylko elementy statyczne.Jeśli klasa posiada jeden lub więcej prywatne konstruktory i brak konstruktorów publicznych, innych klas (z wyjątkiem klas zagnieżdżonych) nie można utworzyć wystąpienia tej klasy.Na przykład:

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

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

Deklaracja pustego konstruktora uniemożliwia automatyczne generowanie domyślnego konstruktora.Należy zauważyć, że jeżeli nie używasz modyfikatora dostępu z konstruktora nadal będzie prywatnych domyślnie.Jednakże prywatnych stosowany jest modyfikator zazwyczaj jawnie aby je wyczyścić, że nie można utworzyć wystąpienia klasy.

Prywatne konstruktory są używane w celu zapobieżenia Tworzenie instancji klasy, gdy nie ma żadnych pól wystąpień lub metod, takich jak Math klasy, lub kiedy wywoływana jest metoda uzyskania instancji klasy.Wszystkie metody w klasie są statyczne, należy rozważyć dokonanie pełną klasy statyczne.Aby uzyskać więcej informacji, zobacz Klasy statyczne i elementów klas statycznych (Podręcznik programowania C#).

Przykład

Oto przykład klasy przy użyciu konstruktora prywatnych.

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

Należy zauważyć, że jeżeli następującą instrukcję z przykładu, to zostanie wygenerowany błąd ponieważ konstruktora jest niedostępny z powodu jego poziom ochrony:

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

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Klasy i strukturach (Podręcznik programowania C#)

Konstruktory (Podręcznik programowania C#)

Destruktory (Podręcznik programowania C#)

prywatne (C# odniesienia)

publicznego (C# odniesienia)

Koncepcje

Podręcznik programowania C#