-2

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

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

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

    base.Dispose(disposing);
}

然后给出一个例外mscorlib

4

3 回答 3

6

Convert.ToDouble如果无法将字符串转换为数字,则抛出异常。

您可能想尝试一下Double.TryParsetrue如果转换成功,则返回值,false否则。out double参数接收结果。

于 2012-10-12T15:47:52.140 回答
1

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

string text = "asdsad";
double d;
if (!double.TryParse(text, out d))
{
     // Not a double
}
于 2012-10-12T15:51:19.573 回答
1

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

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

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

这比依赖Convert异常要好。如果你用它try/catch来确定某事的结果,它不仅速度较慢,而且被认为是不好的做法。

于 2012-10-12T15:54:16.113 回答