任何人都知道为什么以下不会编译? ID的setter应该是两个类的私有,那么为什么我们可以实例化ClassA而不是ClassB?
public class ClassA {
public string ID { get; private set; }
public void test() {
var instanceA = new ClassA() { ID = "42" };
var instanceB = new ClassB() { ID = "43" };
}
public class ClassB {
public string ID { get; private set; }
}
}
由于
答案 0 :(得分:10)
test()
是ClassA
的成员,因此它可以访问A的私有成员(和设置者)。不可以访问私有成员或ClassB
的setter,因此在instanceB上的错误,但不是instanceA。
有关私人会员可访问性的更多信息,建议您在相关问题上查看this answer。
答案 1 :(得分:3)
您的Test
方法位于Class A
,以便可以访问。
答案 2 :(得分:0)
Class B
位于Class A
内,A
无法仅仅因为合成而访问B
的私人成员。