繁体   English   中英

C#静态类和范围

[英]C# Static Classes & Scope

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

protected static class Class1 {}

编译器给出以下错误消息:

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

C#中的非嵌套类可以是公共的内部的,但不能受保护 protected是成员访问修饰符,不适用于在命名空间级别定义的类型。

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

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

public class X {

  private static class Y { }

  protected static class Z { }

}

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

顶级类型(不嵌套在其他类型中)只能具有内部或公共可访问性。 这些类型的默认可访问性是内部的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM