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

发布于 2024-10-12 20:11:06 字数 77 浏览 5 评论 0原文

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

如果是这样,实现这一点的最佳方法是什么?

Can we specify the access modifiers for the get and set accessors of property in C#/.NET?

If so, what would be the best approach to implement this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哽咽笑 2024-10-19 20:11:07

是的,这是可能的。它称为非对称访问器可访问性,您可以在此页面阅读它的 MSDN 文档。代码看起来像这样:

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

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

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

Yes, this is possible. It is called Asymmetric Accessor Accessibility, and you can read the MSDN documentation for it on this page. The code would look something like this:

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

However, there are a couple of important caveats to keep in mind:

  • Only one accessor can be modified.
  • Any restrictions placed on an individual accessor must be more restrictive than the accessibility level of the property itself, not less.
  • You cannot use accessor modifiers on an interface or an explicit implementation of an interface member.
愿与i 2024-10-19 20:11:07

是的,你可以...

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

    public string Property2
    {
        get;
        protected set;
    }
}

等等。

Yes you can...

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

    public string Property2
    {
        get;
        protected set;
    }
}

etc.

¢好甜 2024-10-19 20:11:07

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

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

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

http://msdn.microsoft.com/en-us/library/ms173121.aspx shows the possible modifiers. If you want to have different modifiers, write:

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

However if you declare inner modifiers, they must be less or equal visible than the outer ones.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文