考虑一下:
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
}
}
这怎么解释呢?它在 VisualStudio2015的调试版本中运行于 x86JIT 中时发生。在 x64 JIT 中运行的版本构建将按预期输出 True。
从命令行复制:
csc Test.cs /platform:x86 /debug
(/debug:pdbonly
、 /debug:portable
和 /debug:full
也会复制。)