今回は、C#のTryParseで文字列を変換できるかチェックする方法をご紹介します。
文字列から数値や日時などの特定の型に変換したい場合、変換が失敗すると例外が発生する可能性があります。
そこで役立つのが、C#のTryParseメソッドです。
変換が成功すれば変換後の値が取得でき、失敗しても例外が発生せずに安全に判定が行えます。
TryParseとは
TryParseとは、文字列を指定した型に変換する際に例外を投げず、変換に成功したかどうかを真偽値で返してくれるメソッドです。
多くの型、たとえばintやdouble、DateTime、Guidなどに対応しており、システムで使用されるさまざまなデータ形式を安全に取り扱うことができます。
基本構文は以下の通りです。
1 |
bool isSuccess = 型名.TryParse(変換したい文字列, out 型名 変換後の変数); |
変換が成功するとtrueを返し、outパラメータに変換後の値が設定されます。
失敗した場合はfalseを返し、outパラメータには型の既定値が設定されます。
TryParseを利用する際のポイント
まず、TryParseを利用する目的を整理してみます。
- 例外発生を防ぐ:ユーザー入力など不確定な文字列から変換する際に便利です。
- 結果の判定が容易:boolで成功・失敗を即座に判定できるため、後続処理を明確に設計できます。
- 型ごとのメソッド:int、double、DateTime、Guidなど、変換先に応じたTryParseが用意されています。
次に、既定値の扱いも重要です。
変換に失敗すると、例えばintなら0、doubleなら0.0など、型の初期値がセットされます。
エラー時の挙動をコントロールするためにも、変換結果の真偽値を確認したうえで適切な処理を行うことがポイントです。
具体例
ここからは、実際のコード例を4つご紹介します。
整数(int)を変換する例
整数にTryParseして、成功・失敗を判定する典型的な例です。
1 2 3 4 5 6 7 8 9 10 |
string input = "123"; // int型にTryParseしてみる if (int.TryParse(input, out int result)) { Console.WriteLine("整数への変換に成功: " + result); } else { Console.WriteLine("整数への変換に失敗しました。"); } |
整数への変換に成功: 123
この例では、変換できた場合にresultに変換後の値が入り、成功か失敗かをboolで受け取ることができます。
実数(double)を変換する例
小数点を含む文字列の変換もTryParseで安全に行えます。
1 2 3 4 5 6 7 8 9 10 |
string input = "3.14159"; // double型にTryParseしてみる if (double.TryParse(input, out double pi)) { Console.WriteLine("実数への変換に成功: " + pi); } else { Console.WriteLine("実数への変換に失敗しました。"); } |
実数への変換に成功: 3.14159
システムのカルチャ設定によって、小数点を「.」ではなく「,」と解釈する場合もある点に注意が必要です。
日時(DateTime)を変換する例
日付や時間の文字列をDateTime型に変換する場合も、TryParseが役立ちます。
1 2 3 4 5 6 7 8 9 10 |
string input = "2025/02/25"; // DateTime型にTryParseしてみる if (DateTime.TryParse(input, out DateTime date)) { Console.WriteLine("日時への変換に成功: " + date.ToShortDateString()); } else { Console.WriteLine("日時への変換に失敗しました。"); } |
日時への変換に成功: 2025/02/25
不正な日付形式の場合はfalseが返るため、ユーザー入力の際はチェックが必要です。
GUID(Guid)を変換する例
一意の識別子(GUID)の文字列を扱うときもTryParseが使えます。
1 2 3 4 5 6 7 8 9 10 |
string input = "d3c4b6e4-1c2b-4a3d-9f0e-123456789abc"; // GUID型にTryParseしてみる if (Guid.TryParse(input, out Guid guidValue)) { Console.WriteLine("GUIDへの変換に成功: " + guidValue); } else { Console.WriteLine("GUIDへの変換に失敗しました。"); } |
GUIDへの変換に成功: d3c4b6e4-1c2b-4a3d-9f0e-123456789abc
標準的なGUIDの形式であれば問題なく変換できます。
TryParseを使う際の注意点
ここでは、TryParseを活用するうえでの注意点を整理します。
- カルチャ依存:数値や日時などは実行環境のカルチャ設定により解釈が変わることがあります。
- 既定値に注意:変換に失敗した場合、結果は型の既定値となるため、後続処理で既定値が意味を持つかを考慮してください。
- 例外は発生しない:TryParseは変換に失敗しても例外を投げません。失敗時の対処を明示的に実装しておきましょう。
- 複雑なフォーマット:特定のフォーマットに合致する必要がある場合は、正規表現やカスタムのパースロジックとの組み合わせも検討します。
まとめ
TryParseは、文字列を安全に型変換できる便利なメソッドです。
変換の成否をbool値で判定し、例外を起こさずに安全な処理フローが構築できます。
数値や日時以外にも幅広い型で利用可能ですので、状況に応じて活用を検討してみてください。