C # NullReferenceException на ASSIGNMENT после установки следующего оператора - PullRequest
0 голосов
/ 28 марта 2019

При использовании Set Next Statement во время отладки, то есть при пропуске некоторых операторов, иногда происходит странная вещь: NullReferenceException выбрасывается при присваивании переменной.

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

Обратите внимание, что нигде нет доступа к элементу по нулевой ссылке. Кажется, что происходит то, что присваивается переменная, объявление которой было пропущено [я полагаю, с помощью некоторой оптимизации). Шагая, я пропустил исключение, которое уже было признано неизбежным, и поэтому переменные никогда не использовались и не были объявлены.

Я утверждаю, что выше, потому что проблема исчезает, когда я либо:

  1. Закомментируйте, а не пропустите утверждения, которые выкинули бы; или
  2. объявляем переменную в начале метода.

Правильно ли мое толкование?

Какой процесс (например, JIT) вызывает такое поведение и почему?

...