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

Чтобы определить, является ли строка допустимым представлением указанного числового типа, воспользуйтесь статическим методом 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", а выходному параметру задается числовое значение строки.

Примечание

Строка может содержать только числовые знаки и оставаться недопустимой для типа, где используется метод 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#)

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

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

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

Анализ числовых строк в .NET Framework

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

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