Så här avgör du om en sträng representerar ett numeriskt värde (C#-programmeringsguide)
För att avgöra om en sträng är en giltig representation av en angiven numerisk typ använder du den statiska TryParse
metod 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 ett giltigt 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
du false och anger utparametern till noll. Annars returneras true och utparametern anges till strängens numeriska värde.
Kommentar
En sträng får endast innehålla numeriska tecken och är fortfarande inte giltig för den typ vars TryParse
metod 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 = {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");
Robust programmering
Primitiva numeriska typer implementerar också den Parse
statiska metoden, vilket utlöser ett undantag om strängen inte är ett giltigt tal. TryParse
är vanligtvis mer effektivt eftersom det bara returnerar falskt om talet inte är giltigt.
.NET Security
Använd TryParse
alltid metoderna eller Parse
för att verifiera användarindata från kontroller, till exempel textrutor och kombinationsrutor.