【发布时间】:2016-01-26 15:01:32
【问题描述】:
简化情况
public class A {
protected A() { }
protected A Make() { return new A(); }
}
public class B : A {
A a = new A(); //inaccessible due to protection level
B b = new B();
private B()
{
A c = new A();//inaccessible due to protection level
a = new A(); //inaccessible due to protection level
a = Make();
}
}
为什么不能使用 A 类受保护的构造函数在 B 类中创建 A 的实例?
在我看来,受保护的构造函数就像受保护的方法,所以应该可以在子类中运行它。
【问题讨论】:
-
调用基础构造函数可以
private B() : base() -
能否提供完整的错误信息?
-
hm,我收到另一个错误:无法通过“A”类型的限定符访问受保护的成员“A.A()”;限定符必须是“B”类型(或派生自它)
-
VS Community 2015 中的完整消息:“错误 CS0122 'A.A()' 由于其保护级别而无法访问”
标签: c# inheritance constructor field protected