Практическое руководство. Определение представления числового значения в строке (Руководство по программированию в C#)

Обновлен: Ноябрь 2007

Чтобы определить, является ли строка допустимым представлением указанного числового типа, воспользуйтесь статическим методом TryParse, реализуемым всеми простыми числовыми типами, например DateTime и IPAddress. В следующем примере показано, как определить, является ли число 108 допустимым типом int.

  int i = 0; 
  string s = "108";
  bool result = int.TryParse(s, out i); //i now = 108

Если строка содержит нечисловые знаки либо числовое значение слишком велико или мало для указанного типа, TryParse возвращает значение "false" и задает выходному параметру значение "0". В противном случае возвращается значение "true", а выходному параметру задается числовое значение строки.

Bb384043.alert_note(ru-ru,VS.90).gifПримечание.

Строка может содержать только числовые знаки и оставаться недопустимой для типа, где используется метод TryParse. Например, "256" не является допустимым значением для byte, однако оно допустимо для int. "98,6" не является допустимым значением для int, однако оно допустимо для decimal.

Пример

В следующем примере показано использование TryParse со строковыми представлениями значений long, byte и decimal.

string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
  Console.WriteLine("number1 now = {0}", number1);
else
  Console.WriteLine("numString is not a valid long");

byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
  Console.WriteLine("number2 now = {0}", number2);
else
  Console.WriteLine("numString is not a valid byte");

decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
  Console.WriteLine("number3 now = {0}", number3);
else
  Console.WriteLine("number3 is not a valid decimal");            

Отказоустойчивость

Простые числовые типы также реализуют статический метод Parse, который вызывает исключение, если строка не является допустимым числом. TryParse обычно более эффективен, поскольку он просто возвращает значение "false", если число не является допустимым.

Безопасность

Для проверки данных, введенных пользователем в такие элементы управления, как текстовые поля и поля со списком, всегда следует использовать метод TryParse или Parse.

См. также

Задачи

Практическое руководство. Преобразование массива байтов в значение типа "int" (Руководство по программированию на C#)

Практическое руководство. Преобразование массива строки в значение типа "int" (Руководство по программированию в C#)

Практическое руководство. Преобразование из шестнадцатеричных строк в числовые типы (Руководство по программированию в C#)

Основные понятия

Разбор числовых строк

Другие ресурсы

Преобразование типов

Типы форматирования