Поделиться через


Как определить, представляет ли строка числовое значение (руководство по программированию на C#)

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

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

Если строка содержит ненумерные символы или числовое значение слишком велико или слишком мало для указанного типа, TryParse возвращает значение false и задает для параметра out значение нулю. В противном случае функция возвращает true и устанавливает параметр out в числовое значение строки.

Примечание.

Строка может содержать только числовые символы, но всё же быть недействительной для типа, в котором используется метод 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 = {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 = {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 = {number3}");
else
Console.WriteLine("number3 is not a valid decimal");

Надежное программирование

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

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

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

См. также