Udostępnij za pośrednictwem


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 może nadal być nieprawidłowy dla typu, którego metodę TryParse stosujesz. Na przykład wartość "256" nie jest prawidłową wartością dla byte, ale jest prawidłowa dla elementu int. Wartość "98.6" nie jest prawidłowa dla int, ale jest prawidłowa dla decimal.

Przykład

W poniższych przykładach pokazano, jak używać TryParse z reprezentacjami ciągów wartości long, bytei 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 = {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");

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 korzystaj z metod TryParse lub Parse do weryfikacji poprawności danych wejściowych użytkownika z kontrolek, takich jak pola tekstowe i pola kombi.

Zobacz też