2015-08-21 124 views
-1

我明白,這可能被認爲是本副本:Parse v. TryParseVB.Net Int32.TryParse轉換異常

但是,可能有人告訴我,爲什麼這個代碼拋出一個異常時,是不應該的TryParse拋出的任何異常都?

If Int32.TryParse(txtOrdLine.Text.Trim, txtOrdLine.Text) = False Then 

在txtOrdLine中輸入的值爲「1-4」。

例外情況是它無法將字符串「1-4」轉換爲Integer類型。這是一個ASP.Net 4.5網站的代碼,如果這有所幫助。

任何信息將不勝感激。

謝謝。

+2

你的第二個參數必須是整型變量。 – LarsTech

+0

當它是一個有效的數字時它會自動轉換,所以情況並非如此。此外,錯誤是從字符串到整數,而不是相反。 –

+3

設置[Option Strict On](https://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx)指出代碼中的問題。 –

回答

2

出現此錯誤的原因是自動將第二個參數從String更改爲Int32失敗。

VB.Net有效地重新編寫代碼爲:

Dim temp as Int32 
temp = Int32.Parse(txtOrdLine.Text) ' Exception here! 
Int32.TryParse(txtOrdLine.Text.Trim, temp) 
txtOrderLine.Text = temp.ToString() 

你需要創建一個臨時Int32值,並將其傳遞到Int32.TryParse()

+0

...或者如果您不關心轉換,只需使用零。 – LarsTech

0

如果這僅僅是一個檢查,那麼你不需要變量。

If Not Int32.TryParse(txtOrdLine.Text.Trim, Nothing) Then 
     'here if parse fails 
    End If