Подтвердить что ты не робот

Отладчик Visual Studio показывает неправильное значение (null, где должно быть значение)

Я застрял, почему это происходит? Код буквально говорит, что entity!= Null, но отладчик считает его нулевым. Что происходит?

visual studio screenshot - debugging

Я уже перешел на x86, перекомпилировал, очистил, даже перезапустил компьютер. И код всегда был таким, нет версии, где оператор if был другим. И если я продолжу, я не получу исключение нулевого указателя.

4b9b3361

Ответ 1

У меня возникла такая же проблема, когда в методе была указана переменная с тем же именем. В этом случае отладчик только "заметит" первую переменную. Это не влияет на фактическое выполнение кода.

Ответ 2

Я не уверен, но я думаю, что это эффект цикла foreach в сочетании с функцией ChangeTracker.Entries().

Функция foreach представляет собой сбор данных по запросу. Таким образом, он не получает все данные из ChangeTracker.Entries() и после этого начинает цикл с каждым значением.

Это больше получает первое значение из функции → выполнение значения → получение второго значения → ...

Итак, значение равно null, потому что вы еще не использовали объект.

Измените ChangeTracker.Entries() на ChangeTracker.Entries().ToList(), и я думаю, вы увидите изменения.

Взгляните на команду yield для более глубокого понимания того, как работает функция итератора. (Логика немного запутанная:))