6

当从拥有 auto 属性的类中调用初始化器时,为什么可以使用对象初始化器来设置私有 set auto 属性?我以两个类为例。

public class MyClass
{
    public string myName { get; private set; }
    public string myId { get; set; }

    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- works
            myId = "1234"
        };
        return mc;
    }


}

public class MyOtherClass
{
    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- fails
            myId = "1234"
        };
        return mc;
    }
}
4

2 回答 2

4

setter 上的private修饰符意味着 - 封闭类型的私有。

也就是说,属性只能由包含类型设置。

如果不是这种情况,您将永远无法设置该属性,它实际上是只读的。

来自 MSDN -私有(C# 参考)

私有成员只能在类的主体或声明它们的结构中访问

于 2012-05-18T10:52:51.470 回答
0

因为私有意味着在拥有财产的类中可访问。

于 2012-05-18T10:53:44.887 回答