【C#】文字列を数値に変換するメソッド

文字列を数値に変換するメソッド

C#には、文字列を数値に変換するメソッドが複数あります。

 

Parseメソッド

// int型に変換
int a = int.Parse("12345");

Console.WriteLine(a);

実行結果:12345

Parseメソッドでは、下記の場合に例外が発生します。
・引数にnullを指定した場合(ArgumentNullException)
・引数の文字列が数値形式でない場合(FormatException)
・引数の文字列の値が変換する型での値の範囲外の場合(OverflowException)

 

Convertメソッド

// int型に変換
int a = Convert.ToInt32("12345");
Console.WriteLine(a);

// long型に変換
long b = Convert.ToInt64("12345");
Console.WriteLine(b);

// float型に変換
float c = Convert.ToSingle("123.456");
Console.WriteLine(c);

実行結果:
12345
12345
123.456

Convertメソッドでは、下記の場合に例外が発生します。
・引数の文字列が数値形式でない場合(FormatException)
・引数の文字列の値が変換する型での値の範囲外の場合(OverflowException)

 

TryParseメソッド

ParseメソッドやConvertメソッドを使用して、文字列を数値に変換する際には、文字列が数値形式でない場合は例外が発生してしまいます。

一方、TryParseメソッドでは、int型やlong型、byte型など様々な型で使用することができます。
引数で与えられたものが対象の型に変換ができるかどうか判断し、可能ならばTrueを、不可であればFalseを返します。

変換ができない型に対して変換しようとした場合には、例外が発生します。
しかし、TryParseメソッドでは、Falseが返るだけになるため例外処理をする必要がなくなります。

そのため、開発現場ではTryParseを使用する頻度が最も高いです。

string a = "12345";
// (変換したい文字列, out 変換する型の変数)
Console.WriteLine(int.TryParse(a, out int b);

実行結果:12345

第一引数には、変換したいstring型の文字列を記載します。
第二引数には、変換する型の変数を入れます。
第二引数の前にoutを付けるのが特徴です。

変換が成功した場合には、第二引数の変数に変換された数値が入ります。
また、変換できない場合には、0が代入されます。

実際の開発現場では、TryPaseメソッドにif文を組み合わせて使用することが多いです。

// 変換成功時

string a = "12345";

// もし、aをbに変換できなかったら
if (!int.TryParse(a, out int b))
{
    // 変換失敗時の処理
    Console.WriteLine("数値への変換に失敗しました。");
}
else
{
    Console.WriteLine(b);
}

実行結果:12345

 

// 変換失敗時

string a = "abcde";

if (!int.TryParse(a, out int b))
{
    // 変換失敗時の処理
    Console.WriteLine("数値への変換に失敗しました。");
}
else
{
    Console.WriteLine(b);
}

実行結果:
数値への変換に失敗しました。
0

このように、変換成功時と失敗時で処理を分岐しておくことで、保守性が向上します。

 

おすすめ書籍

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)