2012-02-21 2 views
15

Как бы разобрать пустую строку? int.Parse(Textbox1.text) дает мне ошибку:int.Parse, строка ввода не была в правильном формате

Input string was not in a correct format.
System.FormatException: Input string was not in a correct format.

Если текст пуст (Textbox1.text = ''), он выдает эту ошибку. Я понимаю эту ошибку, но не знаю, как ее исправить.

+0

вы Wouldn 't, проверьте, была ли строка пустой, прежде чем пытаться ее проанализировать. если (! string.IsNullOrEmpty (TextBox1.Text)). Очевидно, это все равно даст вам ошибку, если строка не является числом, поэтому добавьте некоторую проверку на вход – SCB

ответ

25

Если вы хотите, чтобы по умолчанию на 0 в пустое текстовое поле (и выбросить исключение на плохо отформатированный вход):

int i = string.IsNullOrEmpty(Textbox1.Text) ? 0 : int.Parse(Textbox1.Text); 

Если вы хотите, чтобы по умолчанию 0 с любым плохо отформатированный вход:

int i; 
if (!int.TryParse(Textbox1.Text, out i)) i = 0; 
+1

второй фрагмент кода предполагает, что TryParse оставит прежнее значение неповрежденным при возврате false, но вместо этого оно будет нулевым. лучше писать 'int i; if (! int.TryParse (Textbox1.Text, out i)) i = 0; 'или кто-то думает, что следующее будет работать' int i = -1; int.TryParse (Textbox1.Text, out i); ' – Firo

+0

@Firo - точка в Google. Обновлено! – userx

+0

'out i' - он будет присвоен' 0', если не разобрать, поэтому для нулевой проверки и назначения являются дополнительными. – Qwertiy

7
if(!String.IsNullOrEmpty(Textbox1.text)) 
    var number = int.Parse(Textbox1.text); 

Или еще лучше:

int number; 

int.TryParse(Textbox1.Text, out number); 
14

Ну, что же вы хотите результат будет? Если вы просто хотите, чтобы подтвердить ввод, используйте int.TryParse вместо:

int result; 

if (int.TryParse(Textbox1.Text, out result)) { 
    // Valid input, do something with it. 
} else { 
    // Not a number, do something else with it. 
} 
4

Попробуйте это:

int number; 
if (int.TryParse(TextBox1.Text, out number)) 
{ 
    //Some action if input string is correct 
} 
-1

вы можете обернуть его с простым try/catch ...

+0

. Ужасный способ выполнить это. Всегда проверяйте ввод - не планируйте исключения. – Ryan

+0

Это действительная альтернатива, но вам должно быть ясно, что вам нужно только 'catch (System.FormatException)' –

+0

его грязное и быстрое решение ... – SolidSnake

Смежные вопросы