Jak określić, czy ciąg reprezentuje wartość liczbową (Przewodnik programowania w języku C#)
Aby określić, czy ciąg jest prawidłową reprezentacją określonego typu liczbowego, należy użyć metody statycznej TryParse
, która jest implementowana przez wszystkie pierwotne typy liczbowe, a także typy, takie jak DateTime i IPAddress. W poniższym przykładzie pokazano, jak określić, czy wartość "108" jest prawidłową int.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Jeśli ciąg zawiera znaki nieliczbowe lub wartość liczbowa jest zbyt duża lub zbyt mała dla określonego typu, TryParse
zwraca wartość false i ustawia parametr out na zero. W przeciwnym razie zwraca wartość true i ustawia parametr out na wartość liczbową ciągu.
Uwaga
Ciąg może zawierać tylko znaki liczbowe i nadal nie jest prawidłowy dla typu, którego TryParse
metoda jest używana. Na przykład wartość "256" nie jest prawidłową wartością byte
, ale jest prawidłowa dla int
elementu . Wartość "98.6" nie jest prawidłową wartością, int
ale jest prawidłową decimal
wartością .
Przykład
W poniższych przykładach pokazano, jak używać TryParse
z reprezentacjami ciągów wartości long
, byte
i 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");
Niezawodne programowanie
Typy liczb pierwotnych implementują Parse
również metodę statyczną, która zgłasza wyjątek, jeśli ciąg nie jest prawidłową liczbą. TryParse
jest ogólnie bardziej wydajny, ponieważ zwraca wartość false, jeśli liczba jest nieprawidłowa.
Zabezpieczenia platformy .NET
Zawsze używaj metod lub Parse
do sprawdzania TryParse
poprawności danych wejściowych użytkownika z kontrolek, takich jak pola tekstowe i pola kombi.