C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
生徒
「先生、C#で文字として入力された数字を本物の数値に変換したいんですが、どうすればいいんですか?」
先生
「良い質問ですね。C#では、文字列を数値に変えるときにint.Parseやint.TryParseを使います。」
生徒
「なるほど!でも、どんなときにどちらを使えばいいんですか?」
先生
「それでは、両方の使い方を丁寧に説明していきましょう!」
1. C#で文字列を数値に変換するとは?
プログラミングの世界では、データの「型(種類)」が非常に重要です。例えば、キーボードから入力された数字や、テキストファイルから読み込んだデータは、コンピューターには単なる「文字の並び(string型)」として認識されます。
「100」という文字があっても、それは人間にとっての数字に見えるだけで、プログラム上では「A」や「B」と同じ「文字」扱いです。そのため、そのままでは足し算や引き算といった算術計算を行うことができません。
ポイント:文字と数値の違い
- 文字列型(string): "100" + "200" = "100200" (文字として結合される)
- 数値型(int): 100 + 200 = 300 (算術計算が行われる)
計算処理や条件分岐(「もし数値が50以上なら」など)を行うためには、この「文字としての数字」を「計算できる数値(int型など)」に変換する処理が必要です。C#では、この変換作業をキャストやパース(解析)と呼び、主にint.Parseやint.TryParseといったメソッドを使用して実現します。
以下のサンプルコードは、文字列のままでは計算できない様子を表しています。
string priceText = "500";
// string型のまま計算しようとするとエラーになります
// int total = priceText + 100;
// 数値に変換することで計算が可能になります
int price = int.Parse(priceText);
int total = price + 100;
Console.WriteLine(total);
600
このように、外部から入ってくる「文字データ」をプログラム内で正しく活用するために、数値変換は欠かせない基礎知識となります。それでは、具体的な変換方法について詳しく見ていきましょう。
2. int.Parseの基本的な使い方
int.Parseメソッドは、文字列として扱われている数字を、プログラムで計算可能な「整数(int型)」へと直接変換するための最もシンプルな道具です。例えば、ユーザーが画面の入力フォームに打ち込んだ数字や、ファイルに保存されていた数字データは、最初はすべて「文字」としてシステムに伝わります。これを取り出して計算に使う第一歩がint.Parseです。
まずは、プログラミング未経験の方でも分かりやすい基本的な記述例を見てみましょう。
// 「100」という文字(string型)を用意します
string inputPrice = "100";
// int.Parseを使って数値(int型)に変換します
int price = int.Parse(inputPrice);
// 数値になったので、消費税10%分を加算するなどの計算ができます
int total = price + 10;
Console.WriteLine("変換後の数値に10を足した結果:");
Console.WriteLine(total);
変換後の数値に10を足した結果:
110
このように、int.Parse(変換したい文字列)と書くだけで、あっという間に計算ができるようになります。非常に直感的で使いやすいため、確実に数字が渡されることが分かっている場面では重宝されるメソッドです。
注意:変換できないデータが混ざるとプログラムが止まります
int.Parseは非常に強力ですが、融通が利かない一面もあります。もし文字列の中に、数字以外の文字("abc"など)や全角の数字、あるいは何も入力されていない空の状態(空文字)が含まれていると、システムは「解析できない!」と判断して「例外(エラー)」を発生させ、プログラムが強制終了してしまいます。
// 数字ではない文字を無理やり変換しようとすると...
string invalidText = "あいうえお";
int errorNumber = int.Parse(invalidText); // ここでプログラムがストップしてしまいます
実務では、ユーザーが常に正しい数字を入力してくれるとは限りません。そのため、不特定多数の人が操作するような箇所では、プログラムが途中で止まってしまわないよう、後ほど解説する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を使うべきだと分かりました!」
先生
「その意識はとても大切です。正しい数値変換ができるようになれば、もっと複雑な処理にも応用できますよ。」
生徒
「はい!これで数字の扱いが怖くなくなりました!」