使用对象初始值设定项设置私有setter

时间:2012-05-18 10:51:05

标签: c# .net initialization automatic-properties object-initializers

当从拥有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;
    }
}

2 个答案:

答案 0 :(得分:3)

setter上的private修饰符表示 - 对封闭类型是私有的。

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

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

来自MSDN - private (C# Reference)

  

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

答案 1 :(得分:0)

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