2015-11-06 48 views
1

为什么在此if语句中的highestOrderLowestTradeVersion行没有被命中,我有点不知所措;在调试时,上述变量在if语句上下文中不存在。即使最后两个if语句是真实的,它也会忽略highestOrderLowestTradeVersion这两行。我试着将列表中的变量声明移到更高的位置,而不是初始化它,并在声明后单独初始化它,但我仍然无法获得该变量的值。我的代码中有什么明显的错误吗?未达到嵌套if语句的部分

int latestOrderVersion; 
int latestTradeVersion; 

int lowestOrderVersion = 0; 
int lowestOrderHighestTradeVersion = 0; 

int highestOrderVersion = 0; 
int highestOrderHighestTradeVersion = 0; 
int highestOrderLowestTradeVersion = 0; 

foreach (DataRow filterResult2 in filterResults2.Rows) 
{ 
    latestOrderVersion = Convert.ToInt32(filterResult2["OrderVersion"]); 
    latestTradeVersion = Convert.ToInt32(filterResult2["TradeVersion"]); 

    if (lowestOrderVersion == 0 || latestOrderVersion < lowestOrderVersion) 
    { 
     lowestOrderVersion = latestOrderVersion; 

     if (lowestOrderHighestTradeVersion == 0 || lowestOrderHighestTradeVersion < latestTradeVersion) 
     { 
      lowestOrderHighestTradeVersion = latestTradeVersion; 
     } 
    } 


    if (highestOrderVersion == 0 || latestOrderVersion > highestOrderVersion || latestOrderVersion == highestOrderVersion) 
    { 
     if (latestOrderVersion != highestOrderVersion) 
     { 
      highestOrderVersion = latestOrderVersion; 
      highestOrderLowestTradeVersion = 0; // never gets hit 
     } 

     if (highestOrderHighestTradeVersion == 0 || latestTradeVersion < highestOrderHighestTradeVersion) 
     { 
      highestOrderLowestTradeVersion = latestTradeVersion; // never gets hit 
     } 
    } 
} 
+2

最后两个......还有很多的if语句,而“highestOrderTradeVersion”变量显示了很多。所以很难解释你实际上指的是哪一行代码。尝试评论他们... – ChrisCM

+0

你确定你运行这个版本的代码?做一个干净的解决方案(确保bin/obj文件夹是空的),然后重新构建一切。之后重试。 – Fredou

+0

这为我寻找一个典型的你的pdb文件和你当前的cs类之间的对齐方式。这意味着您需要重新构建整个应用程序才能正确调试。批量构建也有帮助。也尝试重新启动Visual Studio。 – Rober

回答

1

原因是您处于配置优化打开状态。

您从不使用此变量,因此编译器在编译时将其删除。在调试模式下

默认设置为关闭在Release模式

默认设置为ON

关闭优化或用在别的地方。

项目 - >属性 - >建设 - >取消Optimize code

+0

我注意到在编辑之前,你提到我的解决方案可能处于发布模式 - 这是问题所在。我不知道为什么它是在这种模式下,但我已经改变了它(我假设反过来,取消选中优化代码选项),代码工作正常。感谢您提供的这些信息,请在您的答案中提及调试/发布模式! – duney

+0

@duney,用释放/调试信息更新了我的答案 – Fredou