Visual Studio 2010 デバッガーのバグと思われるものに遭遇しました。boolに初期化された変数が に評価される式でtrueAND割り当てされている単純なコードがあります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 ビット プラットフォームを使用)。