Solución:
-
static
la clase no se puede marcarsealed
porque esta hechosealed
por el compilador por defecto.Las clases estáticas están selladas y, por lo tanto, no se pueden heredar.
-
static
la clase no se puede marcar comoabstract
, porque sería inútil.abstract
La clase tiene sentido cuando desea que todas las clases derivadas implementen la misma parte de la lógica. Pero porquestatic
la clase no se puede derivar, no hay forma de que otra clase implemente estas brechas.No pueden heredar de ninguna clase excepto
Object
.
Ambas citas de clases estáticas y miembros de clases estáticas (Guía de programación de C #).
La especificación de C # es un poco más detallada al respecto:
10.1.1.3 Clases estáticas
A
static
la clase puede no incluir unsealed
oabstract
modificador. Tenga en cuenta, sin embargo, que desde unstatic
no se puede instanciar o derivar de la clase, se comporta como si fuera a la vezsealed
yabstract
.
Puedes leer qué significa que la clase sea sealed
o abstract
:
No se puede crear una instancia de una clase abstracta directamente y es un error en tiempo de compilación utilizar el operador nuevo en una clase abstracta.
El modificador sellado se utiliza para evitar la derivación de una clase. Se produce un error en tiempo de compilación si se especifica una clase sellada como clase base de otra clase.
Actualizar
Y unas palabras sobre un artículo vinculado en la consulta que mencionaste (Diseño de clases estáticas). Ya está indicado en la respuesta aceptada de esa pregunta. Si lee con atención, puede ver que:
√ HACER declarar
static
clases comosealed
,abstract
y agregue unprivate
constructor de instancias si su lenguaje de programación no tiene soporte incorporado para clases estáticas.
.NET (también C #) tiene soporte incorporado para clases estáticas, por lo que no tiene (y ni siquiera puede) hacer sus clases pseudoestático marcándolo ambos sealed
y abstract
.