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を使って安全にプログラムを書く習慣をつけると良いでしょう。
まとめ
文字列を数値に変換する基本と重要性
C#で開発を行う上で、文字列を数値に変換する処理は非常に頻繁に登場します。ユーザーが入力した値やファイルから取得したデータは基本的に文字列として扱われますが、実際の計算処理やデータ分析を行うには整数や小数といった数値型に変換する必要があります。今回の記事で学んだint.Parseとint.TryParseは、そのための基本的な手段としてとても重要な役割を持っています。どちらも文字列を実際の数値に変えるためのメソッドですが、特徴や使いどころが異なるため、目的に応じて選び分ける技術が求められます。
特にユーザー入力が関わる場面では、誤入力が起きることを想定して安全なコードを書くことが求められるため、TryParseのように例外を防ぎつつ動作を続行できるメソッドは非常に実用的です。正しいデータが入力されているかどうかを丁寧に確認しながら、確実に処理を進められるようにすることが、堅牢で扱いやすいアプリケーションにつながります。
int.Parseで素早く変換、TryParseで安全に変換
文字列を数値に変換する最もシンプルな手段がint.Parseです。数字だけで構成された文字列であればそのまま整数に変換でき、コードも非常に読みやすくなるため、確実に数字であると分かっている状況には最適です。一方で、文字列に数字以外の文字が含まれていたり、空文字が渡されてしまった場合には例外が発生し、プログラムが途中で停止してしまいます。それを防ぐのがTryParseです。変換が可能かどうかを判断してくれ、失敗しても例外を投げずfalseを返すため、安心して入力を扱うことができます。
たとえば計算機の入力欄や商品注文数の入力など、誤入力が起こりやすい場所ではTryParseが非常に役立ちます。プログラムが予期せぬ動きをしないよう、エラーを避けながら数値に変換する仕組みを作ることが可能です。
変換できる文字列・できない文字列の理解が品質につながる
数字として認識される文字列は、基本的に数字のみ、または先頭に「-」が付いた整数です。それ以外の文字列、たとえば小数点を含む文字列やアルファベットが紛れた文字列、空文字などは整数型には変換できません。これらの違いを理解することで、ユーザーがどのような入力をした際にエラーが起こりやすいかを予測できます。予測できるようになれば、エラーメッセージの表示や入力チェックの仕組みをより適切に作れるようになります。
さらに、用途に応じてdouble.Parseやdouble.TryParseなどの別の型への変換も必要になる場面が出てくるため、型変換の基礎をしっかり理解しておくことは長期的な学習にもつながります。
まとめ用サンプルコード
using System;
class Program
{
static void Main()
{
Console.Write("整数を入力してください:");
string input = Console.ReadLine();
// TryParseで安全に変換
if (int.TryParse(input, out int number))
{
Console.WriteLine($"入力した数の3倍は:{number * 3}");
}
else
{
Console.WriteLine("正しい整数を入力してください。");
}
// Parseの使い方(注意点付き)
try
{
int parsed = int.Parse(input);
Console.WriteLine($"Parse成功:{parsed}");
}
catch
{
Console.WriteLine("Parseでは変換できませんでした。");
}
}
}
このサンプルでは、TryParseとParseの両方を用いた変換処理を確認できます。実行状況に応じて動作の違いを比較することで、それぞれの役割がより明確になります。数値変換は多くのアプリケーションの基盤となる処理であり、正しい変換方法をわかっているだけでプログラムの安定性は大きく高まります。
生徒
「ParseとTryParseの違いがようやく理解できました!安全に変換したいときはTryParseを使えばいいんですね。」
先生
「その通りです。数字として信頼できる入力ならParse、そうでないならTryParseを使い分けるとよいですよ。」
生徒
「ユーザーが何を入力するかわからないときはTryParseを使うべきだと分かりました!」
先生
「その意識はとても大切です。正しい数値変換ができるようになれば、もっと複雑な処理にも応用できますよ。」
生徒
「はい!これで数字の扱いが怖くなくなりました!」