是否可以为属性的get和set访问器指定单独的访问修饰符?

时间:2011-01-20 11:42:52

标签: c# .net properties access-modifiers

我们可以为C#/ .NET中的属性的get和set访问器指定访问修饰符吗?

如果是这样,那么实施此方法的最佳方法是什么?

3 个答案:

答案 0 :(得分:15)

是的,这是可能的。它被称为非对称访问器可访问性,您可以阅读它的MSDN文档on this page。代码看起来像这样:

public int Age
{
    get
    {
        return _age;
    }
    protected set
    {
        _age = value;
    }
}

但是,需要记住几个重要的警告:

  • 只能修改一个访问者。
  • 对个人访问者的任何限制必须更多限制,而不是属性本身的可访问级别,而不是更少。
  • 您不能在接口或接口成员的显式实现上使用访问者修饰符。

答案 1 :(得分:3)

是的,你可以......

public class Example
{
    public string Property
    {
        get;
        private set;
    }

    public string Property2
    {
        get;
        protected set;
    }
}

答案 2 :(得分:1)

http://msdn.microsoft.com/en-us/library/ms173121.aspx显示了可能的修饰符。如果您想要使用不同的修饰符,请写:

[Modifier] [DataType] ProperyName{
    [Modifier] get{}
    [Modifier] set{}
}

但是,如果声明内部修饰符,它们必须小于或等于外部修饰符。