具有私有辅助功能的默认构造函数

时间:2015-07-21 13:15:29

标签: c# asp.net

根据Microsoft Class始终包含私有的默认构造函数,那么如何在另一个类中启动Object。

3 个答案:

答案 0 :(得分:1)

您错过了article中最重要的部分:

  

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

他们在文章中展示的常见用例是关于仅通过所述类使用静态成员,如下所示:

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

    public static double Foo = 3.284;
}

类没有默认的private构造函数,they have a public one (except for abstract classes)

  

如果类是抽象的,那么声明的可访问性为   默认构造函数是 protected。否则,声明   默认构造函数的可访问性为 public 。因此,默认   构造函数始终是

形式

答案 1 :(得分:1)

你只是误读了那个页面。对于没有定义构造函数的类:

class C {}

存在默认的公共构造函数C()

如果显式声明了构造函数,那么该默认构造函数将不存在。如果你声明你的构造函数:

class C
{
    C()
}

然后它将是私有的,因为除非使用明确的publicinternalprotected访问修饰符,否则所有类成员都是私有的。

答案 2 :(得分:0)

"空构造函数的声明会阻止自动生成默认构造函数" (https://msdn.microsoft.com/en-us/library/kcfb85a6.aspx

如果声明一个空构造函数(无论是否为私有构造函数,它并不重要),则会阻止生成默认构造函数(始终是公共的)。