2016-01-26 1 views
0

Как вы можете проверить, действительно ли вход действителен, прежде чем назначать его переменной. Например, если у меня было так:Проверка ввода пользователя перед его изложением в VB

Dim Number As Integer 
Number = Console.ReadLine() 

Если кто-то, чтобы ввести то, что не было числовым, она выдаст неверную исключение случая. Конечно, это можно решить с помощью try/catch, но мне сказали, что использование их - плохая практика. Кроме того, если бы я должен был использовать IsNumeric(), мне все равно нужно было бы хранить входные данные, рискуя еще одной ошибкой литья, прежде чем даже проверить, является ли это числовым или нет. Каким будет лучший способ сделать это?

+1

Используйте один из методов 'TryParse'. – Tim

+1

Я рекомендую начать использовать Option Strict On. – Steve

ответ

2

Использование TryParse. Чтобы использовать пример:

Dim Number As Integer 

If Int32.TryParse(Console.ReadLine(), Number) Then 
    ' Logic for the successful conversion 
Else 
    ' Logic for the unsuccessful conversion 
End If 

Если преобразование прошло успешно, TryParse возвратит Истина и значение будет находиться в выходном параметре (номер). Если преобразование не увенчалось успехом, TryParse вернет значение false, а число (параметр out) будет 0.

Дополнительная информация о Int32.TryParse; несколько других типов данных также имеют метод TryParse.

0

Метод Console.ReadLine возвращает строку, поэтому использование переменной Integer не будет хорошо. Подсказка - всегда проверять документацию или intellisense, чтобы получить тип возвращаемого значения.

Следующие будут считывать значение переменной String и использовать метод Integer.TryParse для его анализа на Integer.

 
Dim strNumber As String 
Dim iNumber as Integer 
strNumber = Console.ReadLine() 
If Not Integer.TryParse(strNumber, iNumber) Then 
    'Handle error 
End If