Visual Studio 2010 デバッガーのバグと思われるものに遭遇しました。bool
に初期化された変数が に評価される式でtrue
AND割り当てされている単純なコードがありますfalse
。その最終結果は明らかに である必要false
がありますが、デバッガーはtrue
代わりに と表示することがあります。
static void Main(string[] args)
{
int x = 20;
int y = 0;
int z = 8;
bool b = true;
b &= x == y || x >= z && y >= z;
}
この問題は常に発生するわけではありません。たとえば、int
変数を AND 代入で実際の値に置き換えると、b
正しく として表示されfalse
ます。変数を後で参照しても ( など)、問題は発生しませんConsole.WriteLine(b)
。
上記のコード スニペット全体がコンパイラによるデッド コードの削除の対象であることは理解していますが、デバッグ モードでコンパイルし、デバッガを接続して実行する場合、そのような自由は許可されないと思いましたか?
私は SP1 で Visual Studio 2010 Professional を使用しており、.NET Framework 4.0 をターゲットにしており (4.5 がインストールされています)、「任意の CPU」のデバッグ モードでビルドしています (64 ビット プラットフォームを使用)。