为什么我的convert.todouble会抛出异常?

时间:2012-10-12 15:46:11

标签: c# .net user-interface type-conversion

我创建了一个GUI,ValueBox.Text是字符串“randomstring”。我想做的是:

如果ValueBox.Text的数字 double valueLenght = Convert.ToDouble(ValueBox.Text);,如果它有字符&&数字或只有字符,然后我认为从MSDN,Convert.ToDouble(字符串)将返回0.这不是这里的情况。代码转到:

protected override void Dispose(bool disposing)
{
    if (disposing && (components != null))
    {
        components.Dispose();
    }

    base.Dispose(disposing);
}

然后从mscorlib

中提供例外

3 个答案:

答案 0 :(得分:6)

如果

Convert.ToDouble无法将字符串转换为数字,则会引发异常。

您可能想尝试Double.TryParse。如果转换成功,返回值将为true,如果不成功,则返回falseout double参数接收结果。

答案 1 :(得分:1)

转换假设您要转换的对象 能够转换。如果不是,则抛出异常。将tryParse()与您想要的对象类型一起使用:

string text = "asdsad";
double d;
if (!double.TryParse(text, out d))
{
     // Not a double
}

答案 2 :(得分:1)

我希望您正在调试并发现在Convert.ToDouble异常之后,您的程序中唯一剩下的就是处理表单/资源。

正如其他人所建议的那样,您可能希望使用Double.TryParse,因为现在您可以使用其布尔输出来确定文本框是否包含(成功解析的)数字:

double myDouble;
if (Double.TryParse(textBox.Text, out myDouble))
{
    // Successful conversion
}
else
{
    // Conversion failed
}

这比依赖Convert例外要好。如果您使用try/catch来确定某些事物的结果,那么它不仅会变慢,而且会被视为不良行为。