Есть ли способ избежать выбрасывания / перехвата исключений при проверке текстовых полей, используемых для ввода чисел? - PullRequest
2 голосов
/ 17 июня 2010

В погоне за элегантным кодированием я хотел бы избежать необходимости отлавливать исключение, которое, как мне известно, может быть выдано, когда я пытаюсь проверить, что поле Text в Textbox является целым числом. Я ищу что-то похожее на TryGetValue для словаря, но класс Convert, похоже, не предлагает ничего, кроме исключений.

Есть ли кто-нибудь, кто может вернуть мне бул для проверки?

Чтобы было ясно, я бы хотел избежать этого

TextEdit amountBox = sender as TextEdit;
if (amountBox == null)
    return;
try
{
    Convert.ToInt32(amountBox.Text);
}
catch (FormatException)
{
    e.Cancel = true;
}

в пользу чего-то вроде этого:

TextEdit amountBox = sender as TextEdit;
if (amountBox == null)
    return;
e.Cancel = !SafeConvert.TryConvertToInt32(amountBox.Text);

Спасибо!

1 Ответ

13 голосов
/ 17 июня 2010

int.TryParse ваш друг ...

TextEdit amountBox = sender as TextEdit; 
if (amountBox == null) 
    return; 
int value;
if (int.TryParse(amountBox.Text, out value))
{
    // do something with value
    e.Cancel = false;
}
else 
{
    // do something if it failed
    e.Cancel = true;
}

... Кстати, большинство типов приватных значений имеют статический метод .TryParse(...), который работает очень похоже на пример выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...