protected internal class foo
{
//this compiles without any errors
}
还
internal class bar
{
public int quix;
protected internal int zyx;
//this compiles without any errors
}
这些编译器错误还是我对标准的误解?
解释:
- 类不能具有受保护的内部访问修饰符,根据 MSDN(直接在命名空间中声明的类和结构(换句话说,未嵌套在其他类或结构中)的类和结构)只能是公共的或内部的,可以是公共的或内部的。如果未指定访问修饰符,则 Internal 是默认值)。
- 并非所有类型或成员都可以在所有上下文中使用所有访问修饰符,并且在某些情况下,类型成员的可访问性受到其包含类型 (MSDN) 的可访问性的限制。公众应该失败。受保护的内部对我来说是模棱两可的——内部修饰符不是必需的。
编辑:我使用 Mono 的事实是不必要的,因为问题是关于标准说什么而不是 MONO 做什么或不做什么。也许我正在编写自己的编译器。这就是为什么我引用 MSDN 来准确说明什么是允许的,什么是不允许的。