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