Рассмотрим:
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 также воспроизводятся.)
