2006年10月5日

微软编译器的bug?(if和else都执行!!)

写一个ASP.NET的网站,用的C#。今天调试一个代码段的时候发现不太对劲。代码是:
if (DeliverTime.SelectValue == "0")
{
parameters[1].Value = DateTime.Now; //line 1
}
else
{
parameters[1].Value = DateTime.Now.Date.AddHours(Convert.ToInt32 (DeliverTime.SelectValue)); //line 2
}
//DeliverTime是一个下拉框
运行的时候发现,无论DeliverTime取何值,parameters[1]的值都是当前时间,不得其解,遂F10跟踪。跟踪结果令我大吃一惊,line 1 和 line 2分别执行了一遍!而且最终结果是line 1的值!由于跟踪变量值只跟踪到天的部分,所以parameters[1]的值的变化没有跟踪到。但是可以肯定的是,在执行line 1 和line 2的时候,parameters[1]确实发生了改变(跟踪器的变量值变红)。
后来重新打开VS.NET2003,Rebuild整个解决方案,问题解决了,可能是编译器的bug吧。

0 条评论:

发表评论

订阅 博文评论 [Atom]

<< 主页