Så här avgör du om en sträng representerar ett numeriskt värde (C#-programmeringsguide)
Om du vill avgöra om en sträng är en giltig representation av en angiven numerisk typ använder du metoden static TryParse
som implementeras av alla primitiva numeriska typer och även av typer som DateTime och IPAddress. I följande exempel visas hur du avgör om "108" är en giltig int.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Om strängen innehåller icke-numeriska tecken eller om det numeriska värdet är för stort eller för litet för den angivna typen, returnerar TryParse
false och anger utparametern till noll. Annars returnerar den sant och utparametern sätts till strängens numeriska värde.
Anmärkning
En sträng får bara innehålla numeriska tecken och fortfarande inte vara giltig för den typ vars TryParse
metod som du använder. Till exempel är "256" inte ett giltigt värde för byte
men det är giltigt för int
. "98.6" är inte ett giltigt värde för int
men det är ett giltigt decimal
.
Exempel
I följande exempel visas hur du använder TryParse
med strängrepresentationer av long
, byte
och decimal
värden.
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");
Robust programmering
Primitiva numeriska typer implementerar också Parse
statisk metod, vilket utlöser ett undantag om strängen inte är ett giltigt tal.
TryParse
är vanligtvis effektivare eftersom det bara returnerar falskt om talet inte är giltigt.
.NET Säkerhet
Använd alltid metoderna TryParse
eller Parse
för att verifiera användarindata från kontroller som textrutor och kombinationsrutor.