Рассмотрим:
using System;
public class Test
{
enum State : sbyte { OK = 0, BUG = -1 }
static void Main(string[] args)
{
var s = new State[1, 1];
s[0, 0] = State.BUG;
State a = s[0, 0];
Console.WriteLine(a == s[0, 0]); // False
}
}
Как это можно объяснить? Это происходит в отладочных сборках в Visual Studio 2015 при работе в x86 JIT. Выпуск сборки или запуск в x64 JIT-выводах True, как ожидалось.
Воспроизведение из командной строки:
csc Test.cs /platform:x86 /debug
(/debug:pdbonly
, /debug:portable
и /debug:full
также воспроизводятся.)