【问题标题】:protected internal [duplicate]受保护的内部[重复]
【发布时间】:2012-09-21 14:33:47
【问题描述】:

MSDN 上的 C# 语言参考将“受保护的内部”定义为“访问仅限于当前程序集或从包含类派生的类型”。但是从语义的角度来看,“受保护的内部”对我来说听起来像“受保护的和内部的”,这意味着该成员只能被同一程序集中的那些派生类访问。是否有任何具有相同含义的访问修饰符?

【问题讨论】:

标签: c# internal protected


【解决方案1】:

C# 没有任何这样的访问修饰符。

但是,CLR 确实支持它,因为 FamANDAssem 访问级别(protected internal 是 FamORAssem)

【讨论】:

  • 受保护的内部在 C# 中受支持。它是受保护的私有,仅在 C++ 中可用。受保护的内部是 FamORAssem。受保护的私有是 FamANDAssem。
  • BlackWasp 是正确的。 C# 确实支持受保护的内部。见msdn.microsoft.com/en-us/library/ms173121(v=vs.110).aspx
  • @BlackWasp:我就是这么说的。
  • @BlackWasp:我认为你误解了 OP 的问题。
  • 好点,我重读过,我是个白痴(不是第一次,我肯定也不是最后一次):)
【解决方案2】:

不,没有这样的修饰符。 Internal 应该足够了,因为您应该能够从同一程序集中的其他类型中知道什么是合法的,什么是不合法的。

【讨论】:

  • 谢谢!但我想要达到的是,不可能以这样一种方式定义一个成员,即它只能被派生类和在同一个程序集中访问。尽管我现在想不出这样一个访问修饰符会派上用场的场景,但很高兴知道没有这样的修饰符可以让程序员说,这个成员是'既受保护又是内部的'
  • @adfs: 能够将方法声明为internal protected 将比internal 更好,仅在方法应带参数的情况下protected 嵌套类类型,特别是如果该受保护类具有内部类型的成员。
猜你喜欢
  • 2012-03-27
  • 2012-10-09
  • 2014-02-11
  • 2011-01-23
  • 1970-01-01
  • 2013-04-08
  • 2011-02-08
  • 2011-10-07
  • 2011-03-11
相关资源
最近更新 更多