Dela via


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, 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 = {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.

Se även