Quelle est la signification de CTOR?


221

Dans de nombreux fichiers C #, j'enregistre des balises de régions (?) Qui sont nommées CTOR ou ctor. Quelle est la signification de ctor? Pourquoi une telle région s'appelle-t-elle ctor?

Réponses:


305

C'est juste un raccourci pour "constructeur" - et c'est aussi ce que le constructeur est appelé en IL. Par exemple, ouvrez Reflector et regardez un type et vous verrez des membres appelés .ctorpour les différents constructeurs.


3
pourquoi ça s'appelle .ctor? Quelle est la signification du point (.) Devant?
isuruceanu

@isuruceanu: Je soupçonne que c'est pour montrer que c'est un nom réservé. Mais juste une supposition.
Jon Skeet

Et xxx. #. Ctor ()? , il échoue à mon exécution FxCop. stackoverflow.com/questions/17024149/…
Andreas Blomqvist

8
@ Jessy: Je l'ai rarement entendu prononcer, mais je le prononcerais "see-tor".
Jon Skeet

5
@isuruceanu Tout commence par "." dans l'IL est des métadonnées.
Jude

45

Habituellement, cette région doit contenir les constructeurs de la classe


2
"devrait contenir" - cela signifie-t-il qu'un .ctor ne fait pas nécessairement toujours référence à un constructeur? Ou tout simplement qu'il ne fait pas toujours référence au constructeur d'une classe (car il pourrait faire référence à une structure par exemple)?
cogumel0

@ cogumel0 Ou plutôt "devrait contenir s " ;-)
Sнаđошƒаӽ

36

Pour développer un peu plus, il existe deux types de constructeurs: les initialiseurs d'instance (.ctor), les initialiseurs de type (.cctor). Générez le code ci-dessous et explorez le code IL dans ildasm.exe. Vous remarquerez que le champ statique «b» sera initialisé via .cctor () tandis que le champ d'instance sera initialisé via .ctor ()

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

14

Tapez "ctor" et appuyez deux fois sur la touche TAB pour ajouter automatiquement le constructeur par défaut


Dans VS2013 (et en utilisant R # 2016.1), je n'ai qu'à appuyer sur tab une fois. Pas sûr des autres versions de VS / R #
ro͢binmckenzie

13
Ce n'est pas une réponse à la question.
Malfist

9
Pas une réponse, donc voté. Mais une chose intéressante à savoir, donc sans vote. :-)
Sнаđошƒаӽ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.