方法: 文字列が数値を表しているかどうかを確認する (C# プログラミング ガイド)How to: Determine Whether a String Represents a Numeric Value (C# Programming Guide)

文字列が指定された数値型の有効な表現であるかどうかを確認するには、静的 TryParse メソッドを使用します。このメソッドには、すべてのプリミティブ数値型が実装されており、また DateTimeIPAddress などの型も実装されています。To determine whether a string is a valid representation of a specified numeric type, use the static TryParse method that is implemented by all primitive numeric types and also by types such as DateTime and IPAddress. 次の例では、"108" が有効な int かどうかを確認する方法を示します。The following example shows how to determine whether "108" is a valid int.

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

文字列が数値以外の文字、または指定した型で表すには大きすぎる (または小さすぎる) 数値の場合、TryParse は false を返し、out パラメーターを 0 に設定します。If the string contains nonnumeric characters or the numeric value is too large or too small for the particular type you have specified, TryParse returns false and sets the out parameter to zero. それ以外の場合は true を返し、out パラメーターを文字列の数値に設定します。Otherwise, it returns true and sets the out parameter to the numeric value of the string.

注意

文字列が数値文字列だけを含んでいても、使用する TryParse メソッドの型として有効ではない場合があります。A string may contain only numeric characters and still not be valid for the type whose TryParse method that you use. たとえば、"256" は byte の有効値ではありませんが、int としては有効です。For example, "256" is not a valid value for byte but it is valid for int. " 98.6" は int の有効値ではありませんが、有効な decimal です。"98.6" is not a valid value for int but it is a valid decimal.

Example

次の例では、long 値、byte 値、および decimal 値の文字列表現を指定して TryParse を使用する方法を示します。The following examples show how to use TryParse with string representations of long, byte, and decimal values.


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

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

プリミティブ数値型は、Parse 静的メソッドも実装します。このメソッドは、文字列が有効な数値でない場合は例外をスローします。Primitive numeric types also implement the Parse static method, which throws an exception if the string is not a valid number. 一般に、数値が有効でない場合は単に false を返す TryParse の方が効率的です。TryParse is generally more efficient because it just returns false if the number is not valid.

.NET Framework セキュリティ.NET Framework Security

テキスト ボックス、コンボ ボックスなどのコントロールからのユーザー入力を検証するには、常に TryParse メソッドまたは Parse メソッドを使用してください。Always use the TryParse or Parse methods to validate user input from controls such as text boxes and combo boxes.

関連項目See also