При использовании Set Next Statement во время отладки, то есть при пропуске некоторых операторов, иногда происходит странная вещь: NullReferenceException
выбрасывается при присваивании переменной.
Кажется, проблема возникает, когда я пропустил инструкцию, которая вызвала бы исключение (и потенциально могло быть перехвачено в другом месте). Например, я мог бы сначала пропустить конструкцию объекта, а затем позже пропустили член доступ к этому объекту (который бросил бы свой собственный NullReferenceException
).
Обратите внимание, что нигде нет доступа к элементу по нулевой ссылке. Кажется, что происходит то, что присваивается переменная, объявление которой было пропущено [я полагаю, с помощью некоторой оптимизации). Шагая, я пропустил исключение, которое уже было признано неизбежным, и поэтому переменные никогда не использовались и не были объявлены.
Я утверждаю, что выше, потому что проблема исчезает, когда я либо:
- Закомментируйте, а не пропустите утверждения, которые выкинули бы; или
- объявляем переменную в начале метода.
Правильно ли мое толкование?
Какой процесс (например, JIT) вызывает такое поведение и почему?