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