2011-01-06 31 views

Respuesta

218

Es sólo una abreviatura para "constructor", y es lo que el constructor se llama en IL, también. Por ejemplo, abra Reflector y observe un tipo y verá miembros llamados .ctor para los diversos constructores.

+2

por qué se llama .ctor? ¿Cuál es el significado de (.) Punto al frente? – isuruceanu

+0

@isuruceanu: sospecho que es para mostrar que es un nombre reservado. Sólo una suposición sin embargo. –

+0

¿Qué hay de xxx. #. Ctor()? , falla mi ejecución FxCop. http://stackoverflow.com/questions/17024149/fxcop-exception-bad-method-type-parameter-in-position-0 –

41

Por lo general, esta región debería contener los constructores de la clase

+1

"debería contener" - hace eso ¿significa que un .ctor no siempre es referencia de un constructor? O simplemente que no siempre hace referencia al constructor de una clase (porque podría hacer referencia a una estructura, por ejemplo)? – cogumel0

+0

@ cogumel0 O más bien "debería contener ** s **" ;-) –

28

Para ampliar un poco más, hay dos tipos de constructores: inicializadores de instancia (.ctor), inicializadores tipo (.cctor). Cree el código a continuación y explore el código IL en ildasm.exe. Usted notará que el campo estático 'b' será inicializado a través .cctor() mientras que el campo de instancia será inicializado a través .ctor()

internal sealed class CtorExplorer 
{ 
    protected int a = 0; 
    protected static int b = 0; 
} 
7

Tipo "Héctor" y presione la tecla TAB dos veces este agregará el constructor predeterminado automáticamente

+0

En VS2013 (y usando R # 2016.1) solo tengo que presionar la pestaña una vez. No estoy seguro acerca de otras versiones de VS/R # –

+5

Esta no es una respuesta a la pregunta. – Malfist

+2

No es una respuesta, por lo tanto downvoted. Pero es algo interesante de saber, por lo que no se desestimó. :-) –

Cuestiones relacionadas