好吧,我有这个代码-(控制台应用程序),但它失败的winforms,asp.net,或任何东西。
DataTable rstData = new DataTable();
rstData.Columns.Add("VisitDate", typeof(DateTime));
DataRow OneRow = rstData.NewRow();
OneRow["VisitDate"] = DBNull.Value;
rstData.Rows.Add(OneRow);
DateTime? dtTest = (DateTime?)rstData.Rows[0]["VisitDate"] as DateTime?;
bool testbvalue = true;
Console.WriteLine(testbvalue.ToString());
Console.WriteLine("Hit enter to continue");
Console.ReadLine();
当我运行上面的程序时,我得到这个错误:
前面代码中没有触发任何错误,但是简单的bool赋值失败。
如果我注解掉代码的第一部分,就像这样说:
//DataTable rstData = new DataTable();
//rstData.Columns.Add("VisitDate", typeof(DateTime));
//DataRow OneRow = rstData.NewRow();
//OneRow["VisitDate"] = DBNull.Value;
//rstData.Rows.Add(OneRow);
//DateTime? dtTest = (DateTime?)rstData.Rows[0]["VisitDate"] as DateTime?;
bool testbvalue = true;
Console.WriteLine(testbvalue.ToString());
Console.WriteLine("Hit enter to continue");
Console.ReadLine();
那么代码当然是有效的。
Edit:堆栈跟踪显示如下:
StackTrace
" at CSharpConsole.Program.Main(String[] args) in
C:\\Users\\Kalla\\source\\repos\\CSharpConsole\\Program.cs:line 20" string
因此,堆栈跟踪显示了正确的行-调试器和VS突出显示了错误的行。
1条答案
按热度按时间yyyllmsg1#
布尔赋值语句很好。
上一行产生错误,即
由于某种原因,调试器在引发异常后在错误的行上暂停。
如果注解掉带有bool赋值的行(以及相关的控制台输出),您将看到异常报告在
Console.WriteLine("Hit enter to continue")
行。DateTime
赋值行上的直接类型转换(使用括号进行类型转换)是不必要的,实际上,如果将其删除,代码运行良好:但是,我仍然不确定为什么调试器在错误的行上暂停。