C#中属性的不同访问修饰符

3

在属性中,我们是否可以为getset使用不同的访问修饰符?


你尝试过它,发生了什么事? - Juliet
2个回答

10

是的,你可以这样做,但是需要遵守一个规则,即getter/setter的访问修饰符不能比属性本身更加限制。

例如(C#):

public Foo { get; private set; } //this is okay
protected Bar { get; public set; } //this will throw a compile error

4

您可以限制属性的getter或setter:

public string MyProperty
{
    get { return _myProperty; }
    private set { _myProperty = value; }
}

它也适用于内部和受保护的。 然而,关键词是“限制”- 您不能使任何修饰符比整体修饰符更易访问。


从技术上讲,您可以使用公共setter来代替私有getter。无论如何,您都可以为get或set设置不同的修饰符。 - light
@light 是的,不过有一些情况是不允许的;请看下面我的回答。 - Brian Driscoll
@Brian 抱歉,我的回答没有考虑到这一点。你是完全正确的。 - light

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接