Bagikan melalui


Private Constructor (Panduan Pemrograman C#)

Private constructor adalah instance constructor khusus. Umumnya digunakan di class yang hanya berisi member statis. Jika class memiliki satu atau beberapa private constructor dan tidak ada public constructor, class lain (kecuali class bersarang) tidak dapat membuat instance class ini. Contohnya:

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

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

Deklarasi constructor kosong mencegah pembuatan otomatis constructor tanpa parameter. Perhatikan bahwa jika Anda tidak menggunakan modifier access dengan constructor, itu masih akan bersifat privat secara default. Namun, privatemodifierbiasanya digunakan secara eksplisit untuk memperjelas bahwa class tidak dapat dipakai.

Private constructor digunakan untuk mencegah pembuatan instance pada class ketika tidak ada instance bidang atau method, seperti class Math, atau ketika method dipanggil untuk mendapatkan instance class. Jika semua method di class adalah statis, pertimbangkan untuk membuat class lengkap menjadi statis. Untuk informasi lebih lanjut lihat Static Class dan Static Class Member.

Contoh

Berikut ini adalah contoh class menggunakan 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

Perhatikan bahwa jika Anda membatalkan komentar statement berikut dari contoh, itu akan menghasilkan error karena constructor tidak dapat diakses karena tingkat perlindungannya:

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

Lihat juga