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

Neh*_*eha 0 c#

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

私人或受保护的

例如

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

            m_ival = value;
        }

    }
Run Code Online (Sandbox Code Playgroud)

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

Cri*_*ole 10

两者均受保护

protected int mbox_ival {
    get { return m_ival; }
    set { m_ival = value; }
}
Run Code Online (Sandbox Code Playgroud)

你只能拥有一个的原因是你拥有了属性的访问修饰符.

该修饰符是默认修饰符.修改两者只意味着你应该"提升"更宽松的一个.

例如:

public int mbox_ival {
    protected get { return m_ival; }
    private set { m_ival = value; }
}
Run Code Online (Sandbox Code Playgroud)

没有任何意义,因为该财产实际上并不公开.它至多受到保护.所以你应该这样做:

protected int mbox_ival {
    get { return m_ival; }
    private set { m_ival = value; }
}
Run Code Online (Sandbox Code Playgroud)