2011-01-06 3 views
159

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

ответ

218

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

+2

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

+0

@isuruceanu: Я подозреваю, что это означает, что это зарезервированное имя. Впрочем, догадка. –

+0

Как насчет xxx. #. Ctor()? , это не позволяет выполнить FxCop. http://stackoverflow.com/questions/17024149/fxcop-exception-bad-method-type-parameter-in-position-0 –

41

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

+1

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

+0

@ cogumel0 Или, скорее, «должен содержать ** s **», ;-) –

28

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

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

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

+0

В VS2013 (и с использованием R # 2016.1) мне нужно только нажать вкладку один раз. Не уверен в других версиях VS/R # –

+5

Это не ответ на вопрос. – Malfist

+2

Не ответ, так подано. Но интересная вещь, которую нужно знать, поэтому нераскрытая. :-) –