Özel Oluşturucular (C# Programlama Kılavuzu)

Özel oluşturucu, özel bir örnek oluşturucudur. Genellikle yalnızca statik üyeler içeren sınıflarda kullanılır. Bir sınıfta bir veya daha fazla özel oluşturucu varsa ve ortak oluşturucu yoksa, diğer sınıflar (iç içe sınıflar dışında) bu sınıfın örneklerini oluşturamaz. Örneğin:

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

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

Boş oluşturucunun bildirimi, parametresiz bir oluşturucunun otomatik olarak oluşturulmasını engeller. Oluşturucuyla bir erişim değiştirici kullanmazsanız varsayılan olarak özel olmaya devam edeceğine dikkat edin. Bununla birlikte, özel değiştirici genellikle sınıfın örneğinin oluşturulamayacağını açıkça belirtecek şekilde kullanılır.

Özel oluşturucular, sınıf gibi Math örnek alanları veya yöntemleri olmadığında veya bir sınıfın örneğini almak için bir yöntem çağrıldığında sınıfın örneklerinin oluşturulmasını önlemek için kullanılır. Sınıfındaki tüm yöntemler statikse, sınıfın tamamını statik yapmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Statik Sınıflar ve Statik Sınıf Üyeleri.

Örnek

Aşağıda, özel oluşturucu kullanan bir sınıf örneği verilmiştir.

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

Örnekteki aşağıdaki deyimin açıklamasını kaldırırsanız, oluşturucunun koruma düzeyi nedeniyle erişilemez olduğu için bir hata oluşturacağını unutmayın:

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

Ayrıca bkz.