我遇到一些非常奇怪之前,我從來沒有見過,不知道如果任何人都可以在這個問題上闡明: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