更新:2007 年 11 月
私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。例如:
C# | 复制代码 |
---|---|
class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... } |
声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用
当没有实例字段或实例方法(如
示例
下面是使用私有构造函数的类的示例。
C# | 复制代码 |
---|---|
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 |
注意,如果您取消注释该示例中的以下语句,它将生成一个错误,因为该构造函数受其保护级别的限制而不可访问:
C# | 复制代码 |
---|---|
// Counter aCounter = new Counter(); // Error
|
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
10.11.5 私有构造函数
10.1.1.3 静态类