В чем смысл CTOR?


222

Во многих файлах C # я сохраняю теги регионов (?), Которые называются CTOR или ctor. В чем смысл ctor? Почему такой регион называется ctor?

Ответы:


306

Это просто сокращение от «конструктор» - и это то, что конструктор также называется в IL. Например, откройте Reflector и посмотрите на тип, и вы увидите члены, вызываемые .ctorдля различных конструкторов.


3
почему это называется .ctor? Что означает (.) Точка впереди?
isuruceanu

@isuruceanu: Я подозреваю, что это означает, что это зарезервированное имя. Просто предположение, хотя.
Джон Скит

Как насчет ххх. #. Ctor ()? , это не удается мое выполнение FxCop. stackoverflow.com/questions/17024149/…
Андреас Бломквист

8
@Jessy: я редко слышал, чтобы это произносили, но я бы произносил это как "see-tor".
Джон Скит

5
@isuruceanu Все начинается с "." в IL есть метаданные.
Джуд

45

Обычно этот регион должен содержать конструкторы класса


2
«должен содержать» - означает ли это, что .ctor не обязательно всегда ссылается на конструктор? Или просто, что он не всегда ссылается на конструктор класса (потому что он может ссылаться на структуру, например)?
cogumel0

@ cogumel0 Вернее, «должен содержать с » ;-)
Снаđошƒаӽ

36

Чтобы еще немного расширить, есть два вида конструкторов: инициализаторы экземпляров (.ctor), инициализаторы типов (.cctor). Создайте приведенный ниже код и изучите код IL в файле ildasm.exe. Вы заметите, что статическое поле 'b' будет инициализировано с помощью .cctor (), тогда как поле экземпляра будет инициализировано с помощью .ctor ()

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

14

Введите «ctor» и дважды нажмите клавишу TAB, это автоматически добавит конструктор по умолчанию


В VS2013 (и с использованием R # 2016.1) мне нужно всего лишь нажать Tab. Не уверен насчет других версий VS / R #
ro͢binmckenzie

13
Это не ответ на вопрос.
Малфист

9
Не ответ, так что проголосовал. Но интересная вещь, которую нужно знать, так не проголосовала. :-)
Снаđошƒаӽ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.