使用英语阅读

通过


私有构造函数(C# 编程指南)

专用构造函数是一个特殊的实例构造函数。 它通常用于仅包含静态成员的类中。 如果类具有一个或多个私有构造函数,并且没有公共构造函数,则其他类(嵌套类除外)无法创建此类的实例。 例如:

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

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

空构造函数的声明可防止自动生成无参数构造函数。 请注意,如果不对构造函数使用访问修饰符,默认情况下它仍将是私有的。 但是,专用 修饰符通常用于明确说明无法实例化该类。

专用构造函数用于防止在没有实例字段或方法(如 Math 类)或调用方法以获取类实例时创建类的实例。 如果类中的所有方法都是静态的,请考虑将完整的类静态化。 有关详细信息,请参阅 静态类和静态类成员

示例

下面是使用专用构造函数的类的示例。

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: {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

另请参阅