2015-08-21 4 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 
Смежные вопросы