Руководство по программированию в 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".

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

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

См. также