2015-11-11 4 views
13

これはどうしてですか?コードは文字通りentity!= nullだが、デバッガはそれがnullだと考える。何が起こっている?Visual Studioデバッガで間違った値が表示される(値が必要な場合はnull)

visual studio screenshot - debugging

私はすでにも、PCを再起動し、洗浄、再コンパイル、x86のに変更。そして、コードは常にこのように、if文が異なるバージョンはありません。私が続けると、nullポインタ例外が発生しません。

+0

なぜこれが起こっているのか分かりませんが、forループをLinqクエリにリファクタリングすると同じエラーが発生しますか? –

+0

'Immediate Window'は' entity'をチェックするときに何を言いますか? – Jonesopolis

+1

私はこれまでにbinとobjのフォルダを一掃しました – KiwiPiet

答えて

0

わかりませんが、ChangeTracker.Entries()機能と組み合わせてforeachループの効果だと思います。

foreach関数は、必要に応じていくつかのデータを収集します。 したがって、すべてのデータがChangeTracker.Entries()から取得されず、その後に各値でループが開始されます。あなたがオブジェクトを使用していないので、

だから値がnull> ... - >第2の値を取得 - >実行値 -

それはより多くの関数から最初の値を取得していますまだ。

ChangeTracker.Entries()ChangeTracker.Entries().ToList()に変更すると、変更が反映されると思います。

イテレータ機能の詳細については、yieldコマンドを参照してください。 (論理は少し混乱しています:)

2

同じ名前の変数がメソッドの前に宣言されていた場合、同じ問題が発生しました。 その場合、デバッガは最初の変数に「通知」します。実際のコード実行には何の影響もありません。

関連する問題