C# で文字列を Int に変換する方法
-
C# の
stringからintへの変換-Int16.Parse()/Int32.Parse()/Int64.Parse()メソッド -
C# の
stringからintへの変換-Int16.TryParse()/Int32.TryParse()/Int64.TryParse()メソッド -
C# の
StringからIntへの変換-Convert.ToInt16()/Convert.ToInt32()/Convert.ToInt64()メソッド
文字列を int に変換する際には、考慮しなければならないことがあります。この記事では、これを実現するための最も簡単で推奨される方法をいくつか取り上げます。
C# の string から int への変換-Int16.Parse() / Int32.Parse() / Int64.Parse() メソッド
Parse() メソッドを使用して、数値の文字列表現を同等の 16/32/64 ビット符号付き整数に変換できます。ここでは、説明のために、32 ビット変換のみを扱います。
using System;
public class Instance {
public static void Main() {
string str_var = "123";
int num_var = Int32.Parse(str_var);
System.Console.WriteLine(num_var);
}
}
出力:
123
このメソッドを使用することのわずかな欠点は、文字列が数字のシーケンスでない場合に FormatException をスローすることです。
Parse() は文字列の最初と最後の空白を無視しますが、それを除いて、すべての文字は変換を成功させるために適切な数値でなければなりません。
次のコードに示すように、例外を処理するには try...catch ステートメントを使用することをお勧めします。
using System;
public class Instance {
public static void Main() {
string str_var = "abc";
try {
int num_var = Int32.Parse(str_var);
System.Console.WriteLine(num_var);
} catch (FormatException) {
System.Console.WriteLine("Invalid String");
}
}
}
出力:
Invalid String
C# の string から int への変換-Int16.TryParse() / Int32.TryParse() / Int64.TryParse() メソッド
Parse() メソッドの適切な代替手段と見なされ、失敗した場合に TryParse() メソッドは例外をスローしません。代わりに、変換が失敗した場合に False を返すだけで、実装が簡単になります。
using System;
public class Instance {
public static void Main() {
bool result;
string str_var = "111";
int num_var;
result = Int32.TryParse(str_var, out num_var);
if (result)
System.Console.WriteLine(num_var);
else
System.Console.WriteLine("Invalid String");
}
}
出力:
111
C# の String から Int への変換-Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64() メソッド
Convert() メソッドは文字列変数をパラメーターとして取り、同等の 16/32/64 ビットの符号付き数値を返します。Parse() メソッドと同様に、このメソッドでは例外用に try...catch ステートメントが必要です。
using System;
public class Instance {
public static void Main() {
string str_var = "123";
try {
int num_var = Convert.ToInt32(str_var);
System.Console.WriteLine(num_var);
} catch (FormatException) {
Console.WriteLine("Invalid String");
} catch (OverflowException) {
Console.WriteLine("The string cannot fit in 32 bit value");
}
}
}
出力:
123
例外は高価であり、一般的にプログラムフローに含めるのは良い方法とは見なされません。ただし、Convert() メソッドでオーバーフロー条件などの重要な情報を抽出するのに役立つ場合があります。
上記のすべての方法は同等に効果的であり、実装に関しては一定のトレードオフがあります。この記事で説明した考慮事項に基づいて、最適なものを選択することをお勧めします。