C# TryParseで文字列を安全に数値へ変換する
テキストボックスやCSVから受け取った値は文字列です。数値として使いたい場合、int.Parseは変換できない入力で例外を投げます。入力が誤っていることを通常の分岐として扱うなら、TryParseが向いています。
成功したときだけ数値を使う
string input = "12";
if (int.TryParse(input, out int quantity))
{
Console.WriteLine($"数量: {quantity}");
}
else
{
Console.WriteLine("整数を入力してください。");
}"12"は成功、"12.5"や"abc"は失敗します。非常に大きな数でintの範囲を超えた場合も失敗です。
変換成功と有効な値は違う
if (!int.TryParse(input, out int quantity) || quantity < 1 || quantity > 100)
{
Console.WriteLine("数量は1〜100の整数で入力してください。");
return;
}
Console.WriteLine($"注文数量: {quantity}");-3は整数として変換できますが、注文数量としては不正です。構文の確認と業務上の範囲確認を分けます。上のreturnはメソッド内で使う例です。
桁区切りや地域差に注意する
標準のint.TryParseは実行環境のカルチャと既定の数値書式に従います。外部システムと共有するファイルなど、書式を固定したい場合はカルチャとNumberStylesを明示します。
using System.Globalization;
bool ok = int.TryParse(
input,
NumberStyles.Integer,
CultureInfo.InvariantCulture,
out int value);変換に失敗するとvalueには既定値の0が入ります。戻り値のboolを確認せず、0として処理を続けないでください。