在我的应用程序中,我有以下行:
double val = Convert.ToDouble(values8[x]) + 24837;
Run Code Online (Sandbox Code Playgroud)
如果values8[x]无法转换为Double应用程序崩溃错误Input string was not in a correct format.
如何测试这一点,并设置val到DBNull.Value如果转换失败?试试看?这样的事情会被接受吗?
编辑:这是我想要做的
try
{
double val = Convert.ToDouble(values8[x]) + 24837;
com.Parameters.Add("@p1", OleDbType.Date, 255).Value = DateTime.FromOADate(val);
}
catch (exception e)
{
com.Parameters.Add("@p1", OleDbType.Date, 255).Value = DBNull.Value;
}
Run Code Online (Sandbox Code Playgroud)
EDIT2:TryParse我正在寻找.
你最好使用这种double.TryParse方法而不是尝试和捕获哪些可能更昂贵:
double val;
if (double.TryParse(values8[x], out val))
{
// you can safely use the val variable here
}
else
{
// parsing failed
}
Run Code Online (Sandbox Code Playgroud)
如果你事先知道,你也有可能指定文化(你知道小数分隔符对于不同的文化可能会有所不同,......):
double val;
var culture = new CultureInfo("fr-FR");
if (double.TryParse(values8[x], NumberStyles.None, culture, out val))
{
// you can safely use the val variable here
}
else
{
// parsing failed
}
Run Code Online (Sandbox Code Playgroud)