次の方法で共有


文字列が数値を表しているかどうかを判断する方法 (C# プログラミング ガイド)

文字列が指定した数値型の有効な表現であるかどうかを判断するには、すべてのプリミティブ数値型と、DateTimeIPAddressなどの型によって実装される静的TryParse メソッドを使用します。 次の例は、"108" が有効な int であるかどうかを判断する方法を示しています。

int i = 0;
string s = "108";  
bool result = int.TryParse(s, out i); //i now = 108  

文字列に数値以外の文字が含まれている場合、または指定した特定の型に対して数値が大きすぎるか小さすぎる場合、 TryParse は false を返し、out パラメーターを 0 に設定します。 それ以外の場合は true を返し、out パラメーターを文字列の数値に設定します。

文字列には数値のみが含まれている場合でも、使用している TryParse メソッドに対する型にとって有効でないことがあります。 たとえば、"256" は byte の有効な値ではありませんが、 intに対しては有効です。 "98.6" は int の有効な値ではありませんが、有効な decimalです。

次の例では、longbyte、およびdecimal値の文字列表現でTryParseを使用する方法を示します。


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");

堅牢なプログラミング

プリミティブ数値型は、文字列が有効な数値でない場合に例外をスローする Parse 静的メソッドも実装します。 TryParse は通常、数値が無効な場合は false を返すだけなので、より効率的です。

.NET セキュリティ

テキスト ボックスやコンボ ボックスなどのコントロールからのユーザー入力を検証するには、常に TryParse または Parse メソッドを使用します。

こちらもご覧ください