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

文字列が指定された数値型の有効な表現であるかどうかを確認するには、静的 TryParse メソッドを使用します。このメソッドには、すべてのプリミティブ数値型が実装されており、また DateTimeIPAddress などの型も実装されています。 次の例では、"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 です。

次の例では、long 値、byte 値、および 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 = {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");

信頼性の高いプログラミング

プリミティブ数値型は、Parse 静的メソッドも実装します。このメソッドは、文字列が有効な数値でない場合は例外をスローします。 一般に、数値が有効でない場合は単に false を返す TryParse の方が効率的です。

.NET セキュリティ

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

関連項目