Siempre solía considerar las estructuras como algo menos privilegiado, o algo con características menores. Tal vez debido a los conceptos de OOP que soplan todo en Clases.¿Por qué las estructuras estáticas no están permitidas en C#?
Desde la poca cantidad de exposición a C#, entiendo que al establecer una clase estática, me aseguro de que todas las funciones de los miembros & sean estáticas. Además, no podemos tener un constructor para inicializar esa clase, ya que solo hay una sola instancia.
public static struct mystruct
{
public static int a;
}
Me señalaron aquí en el desbordamiento de la pila que este es un método incorrecto. ¿Puede alguien elaborar?
Recibí el error apropiado diciendo "static no es válido para este elemento" cuando creé un nuevo archivo cs & compilado en la consola. Extrañamente cuando agregué esto a un proyecto de trabajo existente para ver si el compilador se quejaba, pero para mi sorpresa, no es así. ¿Alguna razón para esto?
En C#, 'static' es un alias de' sealed' abstracto en una declaración de tipo (que también permite algunas otras comprobaciones en tiempo de compilación, tales como asegurarse de que los métodos son estático también). Como las estructuras son tipos de valores y no permiten el comportamiento polimórfico, entonces tiene sentido por qué 'static 'no está permitido. Sin embargo, puede tener miembros estáticos en una estructura. –
@Steve: si la clase es estática, el compilador también verifica el * uso * del nombre del tipo. Por ejemplo, no puede declarar un parámetro de tipo Enumerable. Puede que ya lo hayas notado, pero quería llamar la atención :) –
@Jon: Es correcto, gracias por recordarme eso. –