私有类中公共构造函数的用途是什么

时间:2016-11-30 22:28:14

标签: c#

我定义了以下类结构:

public sealed class PublicClass
{
    private PrivateClass privateClass;

    public PublicClass()
    {
        this.privateClass = new PrivateClass();
    }

    private sealed class PrivateClass
    {
        public PrivateClass()
        {
        }
    }
}

为了在PublicClass的构造函数中构造PrivateClass的实例,为什么需要使PrivateClass的构造函数为“public”或“internal”?在PrivateClass构造函数上使用“protected”或“private”修饰符会引发编译错误。

3 个答案:

答案 0 :(得分:1)

在这种情况下,您无法将其标记为受保护,因为您使用sealed - 这意味着没有人可以从此类继承。为了能够在此命名空间中创建类的实例,您应该使用public或internal。您无法在其他名称空间中创建此类。

答案 1 :(得分:0)

因为尽管类型是私有的并且只有类可用,但如果你将构造函数设为私有,即使包含的类无法调用它(不使用反射),它也包含在内。

答案 2 :(得分:0)

对于其他答案,我认为关于私人建设者的评论很好:

  

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

https://msdn.microsoft.com/en-us/library/kcfb85a6.aspx