2011-01-06 21 views
159

In molti file C# vengono salvati i tag delle regioni (?) Denominati CTOR o ctor. Qual è il significato di Ctor? Perché una regione del genere è chiamata Ctor?Qual è il significato di CTOR?

risposta

218

È solo una scorciatoia per "costruttore" - ed è anche il nome del costruttore in IL. Ad esempio, apri Reflector e guarda un tipo e vedrai membri chiamati .ctor per i vari costruttori.

+2

perché è chiamato .ctor? Qual è il significato di (.) Punto in primo piano? – isuruceanu

+0

@isuruceanu: Sospetto che sia per dimostrare che si tratta di un nome riservato. Solo un'ipotesi però. –

+0

Che dire di xxx. #. Ctor()? , fallisce l'esecuzione di FxCop. http://stackoverflow.com/questions/17024149/fxcop-exception-bad-method-type-parameter-in-position-0 –

41

Di solito questa regione dovrebbe contiene i costruttori della classe

+1

"dovrebbe contenere" - fa significa che un .ctor non fa necessariamente sempre riferimento a un costruttore? O semplicemente non fa sempre riferimento al costruttore di una classe (perché potrebbe fare riferimento a una struttura per esempio)? – cogumel0

+0

@ cogumel0 O meglio "dovrebbe contenere ** s **" ;-) –

28

per espandere un po 'di più, ci sono due tipi di costruttori: initializers grado (.ctor), tipo inizializzatori (.cctor). Costruisci il codice qui sotto ed esplora il codice IL in ildasm.exe. Si noterà che il campo statico 'b' verrà inizializzato tramite .cctor(), mentre il campo di istanza verrà inizializzato tramite .ctor()

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

Tipo "ctor" e premere il TAB chiave due volte questo aggiungerà automaticamente il costruttore predefinito

+0

In VS2013 (e usando R # 2016.1) devo solo premere il tasto una volta. Non sono sicuro delle altre versioni di VS/R # –

+5

Questa non è una risposta alla domanda. – Malfist

+2

Non una risposta, quindi downvoted. Ma una cosa interessante da sapere, così inedita. :-) –