【C#】Convert.ToInt32とint.Parseの違い
Convert.ToInt32
メソッドとint.Parse
メソッドは、どちらも文字列を整数に変換するために使用されますが、動作や取り扱いにいくつかの重要な違いがあります。これらの違いについて詳しく説明します。
1. 入力値の取り扱い
int.Parse
:
- 期待する入力は
string
型のみです。null
が渡された場合はArgumentNullException
がスローされます。無効な文字列や空文字列が渡された場合はFormatException
がスローされます。
string numberString = "123";
int result = int.Parse(numberString); // 正常に変換され、resultは123
Convert.ToInt32
:
string
型以外にも、bool
,float
,double
,decimal
,null
など多くの型を引数として受け取れます。null
が渡された場合は、例外が発生せず0
が返されます。空文字列が渡された場合はFormatException
がスローされます。
string numberString = "123";
int result = Convert.ToInt32(numberString); // 正常に変換され、resultは123
2. 扱える型の違い
int.Parse
:
- 文字列のみを受け付けます。その他の型を渡すとコンパイルエラーが発生します。
// int.Parseはstring型以外の入力に対応していません
Convert.ToInt32
:
- 文字列以外にも、
bool
,double
,float
,decimal
などのさまざまな型を整数に変換できます。
int boolResult = Convert.ToInt32(true); // 1に変換されます
int doubleResult = Convert.ToInt32(123.45); // 123に変換されます
3. 例外処理の違い
int.Parse
:- 無効な文字列や
null
が渡された場合、FormatException
やArgumentNullException
がスローされます。
- 無効な文字列や
Convert.ToInt32
:null
が渡された場合は例外がスローされず、0
が返されますが、無効な形式の文字列や変換できない型が渡された場合は例外がスローされます。
4. ユースケースの違い
int.Parse
:- 文字列が確実に数値であることが保証されている場合に使用します。
Convert.ToInt32
:- 柔軟にさまざまなデータ型を整数に変換する場合に使用します。特に、
null
や非文字列型を扱う場合に便利です。
- 柔軟にさまざまなデータ型を整数に変換する場合に使用します。特に、
まとめ
int.Parse
は、文字列を整数に変換する際に特化しており、厳密な入力検証が求められる場面に適しています。Convert.ToInt32
は、広範なデータ型を整数に変換でき、null
や異なる型のデータを柔軟に扱いたい場合に適しています。
これらの違いを理解して、適切なメソッドを選択することが重要です。
ディスカッション
コメント一覧
まだ、コメントがありません