В C # следует ли использовать try-catch для проверки числовых параметров? - PullRequest
2 голосов
/ 30 января 2009

Я слышал, что использование перехвата исключений не рекомендуется для проверки чисел.

Например:

bool isnumeric
try
{
int i = int.parse(textbox1.text);
isnumeric = true;
}

catch {isnumenric=false}

Есть ли какой-нибудь другой способ проверить числа в C #?

Ответы [ 8 ]

15 голосов
/ 30 января 2009

Да, попробуйте использовать

int i;    
bool success = Int32.TryParse(textBox1.text, out i);

Метод TryParse в основном делает то, что вы делаете выше.

10 голосов
/ 30 января 2009

Используйте встроенный TryParse

* 1005 Е.Г. *

int number;
bool result = Int32.TryParse(value, out number);
7 голосов
/ 30 января 2009

Да. Вместо этого используйте int.TryParse, double.TryParse и т. Д., Которые все возвращают логическое значение.

В качестве альтернативы есть функция IsNumeric, скрытая в сборках VB (в пространстве имен Microsoft.VisualBasic в Microsoft.VisualBasic.dll), которую также можно вызывать из кода C #:

bool Microsoft.VisualBasic.Information.IsNumeric (значение)

5 голосов
/ 30 января 2009

TryParse ()

int i;
if(Int32.TryParse(someString,out i))
{
    //now use i because you know it is valid
    //otherwise, TryParse would have returned false
}
3 голосов
/ 30 января 2009
int result = -1;
bool isNumeric = Int32.TryParse(text, out result);

isNumeric будет true, если число является числовым, иначе false; если число является числовым, результат будет иметь числовое значение числа.

2 голосов
/ 30 января 2009

bool TryParse (string, out int)

Он вернет значение bool, которое имеет значение true, если ему удалось проанализировать целое число, а параметр out будет содержать целое число (если оно было успешно обработано).

1 голос
/ 31 января 2009

Если вам просто нужно провести числовое тестирование и вам не нужно целое число, вы можете использовать функцию ниже. Это быстрее, чем методы Int32.TryParse (...).

Редактировать для Барри Фанданго: теперь обрабатывает отрицательные числа. Это только для проверки целых чисел.

    public static bool IsNumber(string s)
    {
       if (s == null || s.Length == 0)
        {
            return false;
        }

        if (s[0] == '-')
        {
            for (int i = 1; i < s.Length; i++)
            {
                if (!char.IsDigit(s[i]))
                {
                    return false;
                }
            }
        }
        else
        {
            foreach (char c in s)
            {
                if (!char.IsDigit(c))
                {
                    return false;
                }
            }
        }

        return true;
    }
0 голосов
/ 31 января 2009

Если вам нужно целое число, тогда Int32.TryParse (...) - это то, что вам нужно. Information.IsNumeric (...) (из Microsoft.VisualBasic.dll), если вам все равно, что такое целое число.

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