C#静态课程&范围

时间:2010-11-06 13:45:18

标签: c#

我只是想知道为什么我不能将静态类定义为protected,private等?

protected static class Class1 {}

编译器提供以下错误消息:

  

命名空间中定义的元素不能显式声明为private,protected或protected internal

3 个答案:

答案 0 :(得分:1)

C#中的非嵌套类可以是publicinternal,但不能是protectedprotected是成员访问修饰符,不适用于在命名空间级别定义的类型。

答案 1 :(得分:1)

因为在命名空间中拥有私有或受保护的成员是没有意义的。命名空间不是像类一样的孤立统一,因此私有成员是有意义的。命名空间不能被继承,因此对受保护的成员没有用处。

您可以在另一个类中拥有私有或受保护的静态类:

public class X {

  private static class Y { }

  protected static class Z { }

}

答案 2 :(得分:0)

我只是引用了C#规范中的相应子句:

  

顶层类型,它们不是嵌套的   在其他类型中,只能有内部   或公共可访问性。默认   这些类型的可访问性是   内部