2013-04-26 2 views
3

Я работаю над проектом C# в Visual Studio 2010. Чтобы понять его логику, я использую F10/F11, чтобы пройти через него. Во-первых, я установил точку останова в первой строке кода в Main(). Я ожидаю, что он сломается на каждой строке кода, который он выполняет. Но на самом деле это не прерывает функцию инициализации класса и код инициализации полей членов класса. Я имею в виду не только класс, в котором находится функция Main(), но и каждый другой класс. Например, первая строка кода в Main() являетсяvisual studio 2010 F10/F11 не разбивается на код инициализации члена класса

IApplicationContext ctx=ContextRegistry.GetContext(); 

при нажатии F11 на этой строке кода, он будет переходить к первой строке кода в GetContext(). Но до этого сначала должны выполняться коды инициализации члена класса и код инициализации статического класса ContextRegistry. Поэтому мне нужно вручную установить точку останова в этих местах, чтобы четко видеть, что делает программа на самом деле. Это довольно неудобно, поскольку мне нужно установить точки останова в каждом таком классе.

Это проблема конфигурации? Хотелось бы, чтобы я ясно и сожалел о моем бедном английском. Благодарю.

ответ

0

Вы можете взглянуть на свойства static constructor. Те, которые, как я считаю, имеют отношение к вашему вопросу, приведены ниже:

  • Статический конструктор вызывается автоматически для инициализации класса до создания первого экземпляра или ссылки на любые статические элементы.
  • Статический конструктор нельзя вызвать напрямую.
  • Пользователь не может контролировать, когда статический конструктор выполняется в программе.

Возможно, именно поэтому вы должны вручную установить точку останова в конструкторе.

Смежные вопросы