我定义了以下类结构:
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”修饰符会引发编译错误。
答案 0 :(得分:1)
在这种情况下,您无法将其标记为受保护,因为您使用sealed
- 这意味着没有人可以从此类继承。为了能够在此命名空间中创建类的实例,您应该使用public或internal。您无法在其他名称空间中创建此类。
答案 1 :(得分:0)
因为尽管类型是私有的并且只有类可用,但如果你将构造函数设为私有,即使包含的类无法调用它(不使用反射),它也包含在内。
答案 2 :(得分:0)
对于其他答案,我认为关于私人建设者的评论很好:
私有构造函数是一个特殊的实例构造函数。它是 通常用于仅包含静态成员的类中。如果是一个班级 有一个或多个私有构造函数,没有公共构造函数,其他 类(嵌套类除外)不能创建此类的实例。