我遇到了一些我以前从未见过的非常奇怪的东西,并想知道是否有人可以阐明这个问题:
旧代码:
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");
}
}
}
现在就 resharper 而言,这两个 if 语句是相同的,但这就是问题所在。
在旧代码中,调试器跳过嵌套在 IF 中的前三行并抛出异常。
在新代码中,这完美地工作。有没有人经历过这种情况,更重要的是是什么原因造成的。我很想知道。