我遇到一些非常奇怪之前,我从来没有见过,不知道如果任何人都可以在这个问题上阐明:IF条件没有得到满足,但代码仍然被触发
的旧代码:
if ((orderFileCreationStatus.OrderFileStatus == OrderFileCreationStatus.Status.ContentCreated
|| orderFileCreationStatus.OrderFileStatus == OrderFileCreationStatus.Status.NoContent)
&& orderFileCreationStatus.SpecialMeasureFileStatus != OrderFileCreationStatus.Status.Published
&& orderFileCreationStatus.PersonalisedProductFileStatus != OrderFileCreationStatus.Status.Published)
{
webOrderHeader.OrderStatus = Domain.Duos.OrderStatus.AwaitingAuthorisation;
webOrderHeader.AuthoriserUserId = null;
UpdateWebOrderHeader(webOrderHeader);
throw new Exception("Could not create the Order File for order ID: " + webOrderHeader.OrderId.ToString() + "rollback");
}
新代码:
if ((orderFileCreationStatus.OrderFileStatus == OrderFileCreationStatus.Status.ContentCreated || orderFileCreationStatus.OrderFileStatus == OrderFileCreationStatus.Status.NoContent))
{
if(orderFileCreationStatus.SpecialMeasureFileStatus != OrderFileCreationStatus.Status.Published)
{
if(orderFileCreationStatus.PersonalisedProductFileStatus != OrderFileCreationStatus.Status.Published)
{
webOrderHeader.OrderStatus = Domain.Duos.OrderStatus.AwaitingAuthorisation;
webOrderHeader.AuthoriserUserId = null;
UpdateWebOrderHeader(webOrderHeader);
throw new Exception("Could not create the Order File for order ID: " + webOrderHeader.OrderId.ToString() + "rollback");
}
}
}
现在,只要这两个if语句是相同的,但这里的渔获ReSharper的关注。
在旧代码中,调试器跳过嵌套在IF中的前三行并抛出异常。
在新代码中,此功能完美无缺。有没有人曾经经历过这件事,更重要的是什么导致了它。我很想知道。
你做清洁/重建项目的/解决方案,以确保调试器代码的最新版本?在调试模式下跳行听起来像使用旧版本。 – Alex
这是一个调试或发布版本?调试器喜欢在可能或不可以在发布版本中运行的行中,部分原因是代码中的提示/映射减少。 – ssube
这始终是错误的:如果 (orderFileCreationStatus.SpecialMeasureFileStatus = orderFileCreationStatus.SpecialMeasureFileStatus!) – JeffRSon