プライベート コンストラクターは、特殊なインスタンス コンストラクターです。 通常、静的メンバーのみを含むクラスで使用されます。 クラスに 1 つ以上のプライベート コンストラクターがあり、パブリック コンストラクターがない場合、他のクラス (入れ子になったクラスを除く) は、このクラスのインスタンスを作成できません。 例えば次が挙げられます。
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E; //2.71828...
}
空のコンストラクターの宣言により、パラメーターなしのコンストラクターが自動生成されません。 コンストラクターでアクセス修飾子を使用しない場合でも、既定ではプライベートであることに注意してください。 ただし、 プライベート 修飾子は通常、クラスをインスタンス化できないことを明確にするために明示的に使用されます。
プライベート コンストラクターは、 Math クラスなどのインスタンス フィールドまたはメソッドがない場合、またはクラスのインスタンスを取得するためにメソッドが呼び出されたときに、クラスのインスタンスを作成しないようにするために使用されます。 クラス内のすべてのメソッドが静的である場合は、完全なクラスを静的にすることを検討してください。 詳細については、「 静的クラス」および「静的クラス メンバー」を参照してください。
例
プライベート コンストラクターを使用するクラスの例を次に示します。
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
この例から次のステートメントのコメントを解除すると、コンストラクターが保護レベルのためにアクセスできないため、エラーが生成されることに注意してください。
// Counter aCounter = new Counter(); // Error
こちらもご覧ください
.NET