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, byteoch 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.

Se även