lambda表达式中的枚举的编译方式有所不同;过载分辨率改善的结果?
尝试使用Visual Studio 2015 RC时,我收到了先前工作代码的运行时错误。给定lambda (x => x.CustomerStatusID == CustomerStatuses.Active)作为传递给函数Expression<>,调试器将显示表达式树中的差异。以前它是这样编译的: .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == 0 } 但是在C#6.0中,它现在编译为 .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == (System.Int32).Constant<Services.DataClasses.CustomerStatuses>(Active) } 尽管对我的遍历树的代码的修复很简单,并且可以理解其他细节,但是有人知道像这样漂浮的其他陷阱吗? 或者,是否有人链接到有关如何改进重载分辨率的细节的信息?我找不到。