2009-09-05 8 views

Respuesta

11

En la especificación CLI, un constructor es obligatorio para las clases no estáticas, por lo que el compilador generará al menos un constructor predeterminado si no especifica otro constructor.

Por lo tanto, el compilador C# suministrará el constructor predeterminado por usted.

+2

A menos que sea una clase estática, por supuesto. –

3

Obtendrá el constructor predeterminado, por lo que el resultado será el mismo que está escribiendo. Aunque, el constructor sí no habrá generado las instrucciones para poner a cero los campos de uno en uno (sólo se llamará al constructor de la clase base, aquí está uno generado por el compilador):

.method public hidebysig specialname rtspecialname instance void .ctor() cil managed 
{ 
    .maxstack 8 
    L_0000: ldarg.0 
    L_0001: call instance void [mscorlib]System.Object::.ctor() 
    L_0006: ret 
}

Aunque, antes de ejecutar el ctor, todos los bits de su clase se establecerán en 0, por lo que desde sus puntos de vista, no hay diferencia.

Cuestiones relacionadas