我找到了解决这个错误的方法,但现在我真的很好奇为什么会发生这种情况,想知道是否有其他人遇到过这个错误。
我的功能如下:
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
以前有人见过吗?
更奇怪的是,如果我输入这个:
rating = decimal.Parse("4.0");
效果很好,4.0 是从我的 DataReader 中出来的。
正如我之前所说,TryParse 方法工作正常,所以它不会阻止我携带,但现在我真的很想看看是否有人对此有答案。
期待一些回复!
肖恩
编辑 - 已解决
decimal.Parse 方法运行良好,该函数第二次运行时(在循环中),未对帖子进行评级,因此数据读取器返回空值。在 SQL 中将 COALESCE 包裹在我的计算中可以很好地解决问题。因此,正如您所说,为什么 tryparse 方法没有抛出异常,只是将默认值 0 保留为 _rating。