【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型以外にも、boolfloatdoubledecimalnullなど多くの型を引数として受け取れます。nullが渡された場合は、例外が発生せず0が返されます。空文字列が渡された場合はFormatExceptionがスローされます。

string numberString = "123"; 
int result = Convert.ToInt32(numberString); // 正常に変換され、resultは123

2. 扱える型の違い

int.Parse:

  • 文字列のみを受け付けます。その他の型を渡すとコンパイルエラーが発生します。

// int.Parseはstring型以外の入力に対応していません

Convert.ToInt32:

  • 文字列以外にも、booldoublefloatdecimalなどのさまざまな型を整数に変換できます。

int boolResult = Convert.ToInt32(true); // 1に変換されます 
int doubleResult = Convert.ToInt32(123.45); // 123に変換されます

3. 例外処理の違い

  • int.Parse:
    • 無効な文字列やnullが渡された場合、FormatExceptionArgumentNullExceptionがスローされます。
  • Convert.ToInt32:
    • nullが渡された場合は例外がスローされず、0が返されますが、無効な形式の文字列や変換できない型が渡された場合は例外がスローされます。

4. ユースケースの違い

  • int.Parse:
    • 文字列が確実に数値であることが保証されている場合に使用します。
  • Convert.ToInt32:
    • 柔軟にさまざまなデータ型を整数に変換する場合に使用します。特に、nullや非文字列型を扱う場合に便利です。

まとめ

  • int.Parseは、文字列を整数に変換する際に特化しており、厳密な入力検証が求められる場面に適しています。
  • Convert.ToInt32は、広範なデータ型を整数に変換でき、nullや異なる型のデータを柔軟に扱いたい場合に適しています。

これらの違いを理解して、適切なメソッドを選択することが重要です。

C#

Posted by hidepon