实例化时使用{}大括号设置属性

本文关键字:设置 属性 实例化 | 更新日期: 2023-09-27 17:58:48

有人知道为什么以下内容不会编译吗?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; }
    }
}

感谢

实例化时使用{}大括号设置属性

test()ClassA的成员,因此它可以访问a的私有成员(和setter)。它不可以访问ClassB的私有成员或setter,因此在实例B上出现错误,但在实例a上没有。

有关私人会员无障碍访问的更多信息,我鼓励您在相关问题上看到这个答案。

您的Test方法位于Class A中,因此可以访问。

Class BClass A内部,A不能仅仅因为组合而访问B的私有成员。