静态类中的受保护结构



在c#中,这是:

static class foo
{
protected void doThing(); // CS1057
{
}
}

生成CS1057编译错误,因为静态类不支持继承。

为什么这是允许的呢?在这种情况下,protected关键字的含义是什么?

static class foo
{
protected struct bar
{
}
}

这绝对是一个bug,我建议你把它归档。


ECMA-334, c#的官方规范,说下面的

15.2.2.4静态类
15.2.2.4.1一般

剪断…
静态类声明受以下限制:

  • 剪…
  • 静态类的成员不能声明为protectedprotected internal的可访问性。

不要告诉我这排除了嵌套类型,因为几行之后,嵌套类型被明确地排除在static修饰符限制之外:

静态类的成员不是自动静态的,成员声明必须显式地包含static修饰符(常量和嵌套类型除外)。

最新更新