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 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 intelementu . Wartość "98.6" nie jest prawidłową wartością, int ale jest prawidłową decimalwartością .

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

Zobacz też