Перечисления в лямбда-выражениях компилируются по-разному; следствие улучшения разрешения перегрузки?
при попытке Visual Studio 2015 RC, я получил ошибку времени выполнения на ранее работающий код. Учитывая лямбда (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)
}
хотя исправление моего кода обхода дерева было простым, и дополнительная деталь ценится, кто-нибудь знает о других может быть, они вот так плавают?
кроме того, есть ли у кого-нибудь ссылка на информацию о специфике того, как было улучшено разрешение перегрузки? Я ничего не могу найти.