データ型の変換とは?
データというのは数値型や文字列型などがあるため、用途に合わせて、型変換が必要になります。例えば画面に表示する場合の100は文字ですが、内部で計算に使用する場合は、数値型に変換しないと足し算などの計算はできません。そのように用途に合った型変換が必要なので、型変換のやり方を解説していきます。
データ型の変換の書き方
キャスト
キャストは数値同士などの似た者同士を変換するときに使います。例えばdouble型をint型に変換する場合に使います。
double d1 = 1.9d; int a = (int)d1; MessageBox.Show(a.ToString());
この場合aの値は「1」になります。
short shortValue = 10; int intValue = shortValue;
Shortをintに変換する場合は、特になにも記述しなくても暗黙的な型変換が行われる。自分よりも大きな型に入れる場合はこのような記述ができる。
Parse
string value = "10"; int intValue = int.Parse(value);
この場合は文字列の10がParseでintに変換される。
string value = "aaa"; int intValue = int.Parse(value);
数値に変換できない文字列をintに変換しようとした場合はFormatExceptionとなります。
string value = "10.4"; int intValue = int.Parse(value);
浮動小数点数になりうる数値の文字列をintに変換しようとしてもFormatExceptionになります。
TryParse
string value = "10.4"; int intValue; bool result = int.TryParse(value, out intValue);
TryParseの場合は戻り値がboolであり、変換できたらTrue、できない場合はFalseが返却されます。Intへの変換後の値はoutキーワードで指定した引数に格納されます。例外が発生しないことがParseとの違いです。
Convert
string value = "10"; int intValue = Convert.ToInt32(value);
ParseとConvertの違いはほとんどありません。違いは変換対象がNullの場合にConvertの場合は「0」ゼロになるのに対して、Parseの場合はArgmentNullExceptionとなります。違いはその程度です。
キャストと型変換 (C# プログラミング ガイド)
文字列を数値に変換する (C# プログラミング ガイド)
まとめ
Parse | 失敗時は例外 |
---|---|
TryParse | 失敗時はFalse |
Convert | 失敗時は例外(Nullを数値に変換時は0になる) |
ToString() | 文字列に変換 |