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

Erw*_*yer 4 c# instantiation

任何人都知道为什么以下不会编译?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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ant*_*ram 10

test()是一个成员ClassA,因此它可以访问A的私有成员(和setter).它无权访问私有成员或setter ClassB,因此错误在instanceB而不是instanceA.

有关私人会员可访问性的更多信息,我建议您在相关问题上查看此答案.