C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
生徒
「先生、C#で文字として入力された数字を本物の数値に変換したいんですが、どうすればいいんですか?」
先生
「良い質問ですね。C#では、文字列を数値に変えるときにint.Parseやint.TryParseを使います。」
生徒
「なるほど!でも、どんなときにどちらを使えばいいんですか?」
先生
「それでは、両方の使い方を丁寧に説明していきましょう!」
1. C#で文字列を数値に変換するとは?
プログラムでは、ユーザーの入力やファイルから読み取ったデータは、たいてい「文字列(string型)」として扱われます。しかし、計算などの処理を行うには、「数値(int型など)」に変換する必要があります。
たとえば、キーボードから「123」と入力しても、それは「文字としての123」であり、足し算や引き算はできません。そこで、C#のint.Parseやint.TryParseを使って「文字列を数値に変換」します。
2. int.Parseの基本的な使い方
int.Parseメソッドは、文字列を整数(int型)に変換する最もシンプルな方法です。以下のサンプルを見てみましょう。
string text = "123";
int number = int.Parse(text);
Console.WriteLine(number + 10);
このコードでは、文字列「123」をint.Parseで整数に変換しています。その結果、numberには123が代入され、number + 10の計算で133が出力されます。
133
とても簡単ですね!ただし注意点があります。もし文字列の中に「数字以外の文字」が含まれていると、エラー(例外)が発生します。
string text = "abc";
int number = int.Parse(text); // ここでエラーになります!
このような場合、プログラムが途中で止まってしまうため、安全に変換したいときはTryParseを使います。
3. TryParseで安全に変換する方法
int.TryParseは、「変換できるかどうか」をチェックしてくれる便利なメソッドです。文字列が数値に変換できない場合でも、エラーにはならず、安全に失敗を検出できます。
string text = "123";
int result;
bool success = int.TryParse(text, out result);
if (success)
{
Console.WriteLine("変換成功:" + result);
}
else
{
Console.WriteLine("変換失敗");
}
変換成功:123
このように、TryParseは「変換に成功したかどうか」をbool(真偽値)で返します。成功すればtrue、失敗すればfalseです。
outキーワードは、変換結果を受け取るための変数を指定するものです。outとは「外に出す」という意味で、変換した結果がresultに格納されます。
4. TryParseがエラーを防ぐ仕組み
もう少し詳しく見てみましょう。もし、変換できない文字列を入力した場合でも、TryParseはエラーを起こさずに処理を続けます。
string text = "abc";
int result;
bool success = int.TryParse(text, out result);
if (success)
{
Console.WriteLine("変換成功:" + result);
}
else
{
Console.WriteLine("変換失敗。入力が数値ではありません。");
}
変換失敗。入力が数値ではありません。
このように、TryParseを使うと、ユーザーが誤って文字を入力しても安全に処理できます。実際のアプリケーションや業務システムでも非常によく使われます。
5. 数値に変換できる文字列とできない文字列
次に、「どんな文字列が変換できるのか?」を確認してみましょう。
"123"→ OK(整数に変換可能)"-45"→ OK(マイナスの整数もOK)"12.3"→ NG(小数点を含む文字列はintでは変換できません)"abc"→ NG(数字以外の文字が含まれているため変換できません)""(空文字)→ NG(何もない文字列も変換できません)
もし小数を扱いたい場合は、double.Parseやdouble.TryParseを使うとよいでしょう。
6. 実用例:ユーザーの入力を数値に変換して計算する
最後に、TryParseを使って、ユーザーから入力された値を安全に数値に変換する例を見てみましょう。
Console.WriteLine("数字を入力してください:");
string input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine("入力した数字の2倍は:" + (number * 2));
}
else
{
Console.WriteLine("入力が正しい数字ではありません。");
}
数字を入力してください:
50
入力した数字の2倍は:100
このように、入力された文字列が数値であれば計算を行い、間違った入力ならエラーメッセージを出すことができます。ユーザーが入力を間違えることを前提に安全なプログラムを作ることが大切です。
7. まとめ:int.ParseとTryParseの違いを整理
最後に、2つのメソッドの違いを表で整理しておきましょう。
| メソッド | 特徴 | エラー時の動作 |
|---|---|---|
int.Parse | 文字列を整数に直接変換 | 変換できないとエラー発生 |
int.TryParse | 変換の成功・失敗を判定可能 | エラーを出さずfalseを返す |
初心者のうちは、まずTryParseを使って安全にプログラムを書く習慣をつけると良いでしょう。