Mar*_*zek 13

  1. staticclass无法标记,sealed因为它是sealed由编译器默认生成的.

    静态类是密封的,因此不能继承.

  2. static类不能被标记为abstract,因为它会毫无意义.abstract当您希望所有派生类实现逻辑的相同部分时,class才有意义.但由于static无法导出类,因此其他类无法实现这些空白.

    他们不能继承任何类,除了Object.

这两个引用来自静态类和静态类成员(C#编程指南).

C#规范更详细一点:

10.1.1.3静态类

static类可以不包括sealedabstract改性剂.但请注意,既然一个static类不能被实例化或衍生,它的行为就好像它是两个sealedabstract.

你可以阅读课程的意义sealedabstract:

抽象类不能直接实例化,在抽象类上使用new运算符是编译时错误

sealed修饰符用于防止从类派生.如果将密封类指定为另一个类的基类,则会发生编译时错误.

更新

关于在您提到的查询中链接的文章(静态类设计).已经在该问题的接受答案中说明了这一点.如果你仔细阅读,你会看到:

DO声明static类作为sealed,abstract并添加一个private构造函数,如果你的编程语言不具有内置静态类的支持.

.NET(所以C#以及)都已经内置了对静态类的支持,所以您不必(甚至不可能),使你的类伪静态通过标记它都sealedabstract.