我接受这不是在正常的代码执行期间可能发生的事情,但我在调试时发现它并认为分享有趣.
我认为这是由JIT编译器引起的,但欢迎任何进一步的想法.
我已使用VS2013复制了针对4.5和4.5.1框架的此问题:

要查看此异常,Common Language Runtime Exceptions必须启用:
DEBUG>Exceptions...

我已将问题的原因提炼到以下示例:
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication6
{
public class Program
{
static void Main()
{
var myEnum = MyEnum.Good;
var list = new List<MyData>
{
new MyData{ Id = 1, Code = "1"},
new MyData{ Id = 2, Code = "2"},
new MyData{ Id = 3, Code = "3"}
};
// Evaluates to false
if (myEnum == MyEnum.Bad) // BREAK POINT
{
/*
* A …Run Code Online (Sandbox Code Playgroud)