Respuestas
Respuesta:
Casi todas las estructuras comparten la misma sintaxis que las clases, aunque están más limitadas que éstas:
* Dentro de una declaración de estructura, los campos no se pueden inicializar a menos que se declaren como constantes o estáticos.
* Una estructura no puede declarar un constructor predeterminado (es decir, un constructor sin parámetros) ni un destructor.
* Las estructuras no pueden heredar de clases u otras estructuras.
* Las estructuras se copian en la asignación. Cuando se asigna una estructura a una nueva variable, se copian todos los datos, y cualquier modificación que se realice en la nueva copia no afecta a los datos de la copia original.
* Las estructuras son tipos de valor y las clases son tipos de referencia.
A diferencia de las clases, se pueden crear instancias de las estructuras sin utilizar un operador new.
* Las estructuras pueden declarar constructores que tienen parámetros.
* Una estructura no puede heredar de otra estructura o clase, ni puede ser la base de una clase. Todas las estructuras heredan directamente de System.ValueType, que hereda de System.Object.
* Una estructura puede implementar interfaces.
* Una estructura se puede utilizar como tipo que acepta valores null y se le puede asignar un valor null.
* Los tipos de estructura nunca son abstractos y son siempre sellados implícitamente. Por lo tanto, los modificadores abstract y sealed no están permitidos en una declaración de estructura.
* Debido a que las estructuras no permiten la herencia, la accesibilidad declarada de un miembro de estructura no puede ser protected ni protected internal.
* Los miembros de función de una estructura no pueden ser abstract ni virtual, y sólo se permite el modificador override para invalidar métodos heredados de System.ValueType.
* La asignación a una variable de un tipo struct crea una copia del valor que se asigne. Esto difiere de la asignación a una variable de un tipo de clase, que copia la referencia pero no el objeto identificado por la referencia. De forma similar a una asignación, cuando se pasa una estructura como parámetro de valor o se devuelve como resultado de un miembro de función, se crea una copia de la estructura. Una estructura se puede pasar por referencia a un miembro de función utilizando un parámetro ref u out. Cuando una propiedad o un indizador de una estructura es el destino de una asignación, la expresión de instancia asociada con el acceso a la propiedad o indizador debe estar clasificada como una variable. Si la expresión de instancia está clasificada como un valor, se produce un error de compilación
En cuanto a los constructores estáticos (static) para estructuras, siguen la mayoría de las mismas reglas que las clases. La ejecución de un constructor estático para un tipo struct la desencadena el primero de los siguientes eventos que se produzcan en un dominio de aplicación:
* Se hace referencia a un miembro de instancia del tipo struct.
* Se hace referencia a un miembro estático del tipo struct.
* Se llama a un constructor explícitamente declarado del tipo struct.