2012-10-12 177 views
-2

我創建了一個GUI,ValueBox.Text是字符串「randomstring」。我想要做的是:爲什麼我的convert.todouble引發異常?

如果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

+8

如果這是關於'Convert.ToDouble()',爲什麼要發佈'Dispose()'? – MyCodeSucks

+0

@Prayos 我只是把它保存在那裏,沒有更多。 我是一名新程序員 –

+0

「去那裏」是否表示這是在調試時序列中接下來執行的代碼? – JYelton

回答

6

Convert.ToDouble異常拋出一個異常,如果它不能將字符串轉換爲數字。您可能想試試Double.TryParse。如果轉換成功,返回值將爲true,如果不成功,則返回falseout double參數接收結果。

1

Convert假設您正在轉換的對象可以轉換。如果不是,則拋出異常。使用tryParse()與要代替對象類型:

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

我希望你正在調試,發現該Convert.ToDouble異常後,留在你的程序的唯一事情是形式/資源的處置。

正如其他人所建議的,你可能需要使用Double.TryParse代替,因爲現在你可以使用它的布爾輸出,以確定是否在文本框中包含一個(成功解析)數量與否:

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

這是好於依靠Convert例外。如果您使用try/catch來確定某件事的結果,它不僅會變慢,而且會被認爲是不好的做法。

相關問題