为什么只允许一个属性的一个访问者在c#中拥有访问修饰符?

时间:2014-07-31 13:50:42

标签: c#

在阅读c#中的属性时,我发现只有一个属性的访问者可以拥有访问修饰符,例如

  

私人或受保护的

例如

 public int mbox_ival
    {
        get{
            return m_ival;
        }
       protected set {

            m_ival = value;
        }

    }

现在,如果我想要限制两个要保护的属性,我就知道它是不允许的。在 c#规范中也可以说只有一个访问者可以拥有访问修饰符。我无法理解这背后的原因。我是c#的新手,有人可以帮忙。

2 个答案:

答案 0 :(得分:10)

受保护:

protected int mbox_ival {
    get { return m_ival; }
    set { m_ival = value; }
}

您只能拥有一个的原因是您拥有该属性的访问修饰符。

该修饰符是默认修饰符。修改两者只意味着你应该“提升”更宽松的那个。

例如:

public int mbox_ival {
    protected get { return m_ival; }
    private set { m_ival = value; }
}

没有意义,因为该物业实际上并不公开。它至多受到保护。所以你应该这样做:

protected int mbox_ival {
    get { return m_ival; }
    private set { m_ival = value; }
}

答案 1 :(得分:0)

因为如果你没有在'get'或'set'之前指定访问修饰符,它们都将具有你在属性上设置的访问修饰符。如果您要覆盖要保护的'get'和'set',那么将属性公之于众是没有意义的。您也可以将属性设置为“受保护”。