首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么内部保护不比内部保护更严格?

为什么内部保护不比内部保护更严格?
EN

Stack Overflow用户
提问于 2009-06-30 14:09:18
回答 8查看 7K关注 0票数 34

我想创建一个内部自动属性:

代码语言:javascript
运行
复制
internal bool IP { get; protected internal set; }

我认为可以使setter protectedprotected internal -但我总是得到错误可访问性修饰符必须比属性更具限制性。不是吗?Private帮不了我。

编辑:

问题是:如何使用内部getter和受保护的setter实现自动属性?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-06-30 14:10:34

它实际上是protectedinternal,而不是。它可以通过派生类和同一程序集中的类型访问,既可以访问,也可以访问。认为protected internal意味着只有同一程序集中的派生类才能访问是一种常见的误解。

票数 52
EN

Stack Overflow用户

发布于 2009-06-30 14:13:51

在.NET级别,有两个相似但不同的访问级别:

  • FamilyAndAssembly:比受保护的或内部的限制更严格
  • FamilyOrAssembly:比受保护的或内部的限制更少

在C#中,“受保护的内部”的意思是FamilyOrAssembly;FamilyAndAssembly没有修饰符。

因此,您的protected internal设置器比internal整体属性的限制要小。你能做的就是:

代码语言:javascript
运行
复制
protected internal bool IP { internal get; set; }

但你的策划者比你的得奖者少得多,这很奇怪.

另一种(有点类似的)替代办法是:

代码语言:javascript
运行
复制
internal bool IP { get; set; }

protected void SetIP(bool ip)
{
    this.IP = ip;
}
票数 30
EN

Stack Overflow用户

发布于 2010-12-08 15:36:55

考虑到Jon提到的内容(以及user59808的评论),这难道不能达到预期的结果吗?

protected internal bool IP { get; protected set; }

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1063901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档