C#型変換完全ガイド:暗黙・明示的変換、Parse、Convertクラス
C#型変換をマスターする
C#におけるデータ型変換を、暗黙的・明示的キャストから強力な Parse と Convert APIまで、実例とベストプラクティスとともに解説します。
型変換——値をあるデータ型から別の型へ変えること——はC#の核心スキルです。各変換方法をいつ、どう使うかを理解すれば、安全で効率的なコードが書けます。
C#の変換は大きく2つに分類されます:
- 暗黙的型変換
- 明示的型変換(キャスト)
1. 暗黙的型変換
データ損失の恐れがない場合、コンパイラが自動的に行う変換です。構文的なオーバーヘッドがなく、安全です。
典型的なケースは、より小さな数値型から大きな型への変換——例えば int から double へ——で、値が切り捨てられることなく表現できます。
実例: 暗黙的型変換
using System;
namespace MyApplication {
class Program {
static void Main(string[] args) {
int numInt = 500;
// 暗黙的変換
double numDouble = numInt;
Console.WriteLine($"numInt value: {numInt}");
Console.WriteLine($"numInt Type: {numInt.GetType()}");
Console.WriteLine($"numDouble value: {numDouble}");
Console.WriteLine($"numDouble Type: {numDouble.GetType()}");
Console.ReadLine();
}
}
}
出力
numInt value: 500 numInt Type: System.Int32 numDouble value: 500 numDouble Type: System.Double
double の方が容量が大きいため、コンパイラは int 値をオーバーフローのリスクなしに安全に拡張できます。
2. 明示的型変換(キャスト)
大きい型から小さい型へ、あるいは無関係な型同士で変換する場合に使用します。開発者が意図を明示する必要があり、データ損失の可能性がある場合はコンパイラが警告を出します。
実例: 明示的型変換
using System;
namespace MyApplication {
class Program {
static void Main(string[] args) {
double numDouble = 1.23;
int numInt = (int)numDouble; // 明示的キャスト
Console.WriteLine($"Original double Value: {numDouble}");
Console.WriteLine($"Converted int Value: {numInt}");
Console.ReadLine();
}
}
}
出力
Original double value: 1.23 Converted int value: 1
小数部分が切り捨てられ、1.23 が 1 になります。精度が重要なら、キャスト前に丸め処理を検討してください。
3. Parse() で文字列を変換
string から数値型へ変換する際、int.Parse、double.Parse などが簡潔で型安全なアプローチを提供します。
実例: int.Parse の使用
using System;
namespace Conversion {
class Program {
static void Main(string[] args) {
string n = "100";
int a = int.Parse(n);
Console.WriteLine($"Original string value: {n}");
Console.WriteLine($"Converted int value: {a}");
Console.ReadLine();
}
}
}
出力
Original string value: 100 Converted int value: 100
数値でない文字列(例: "test")をパースしようとすると FormatException がスローされます。本番コードでは try-catch で囲むか、int.TryParse を使ってエラーを適切に処理してください。
4. Convert クラス
静的 Convert クラスは、多様なデータ型間の変換メソッドを幅広く提供し、必要なチェックを内部で行ってくれます。
| メソッド | 説明 |
|---|---|
ToBoolean() | bool に変換 |
ToChar() | char に変換 |
ToDouble() | double に変換 |
ToInt16() | 16ビット int に変換 |
ToString() | string に変換 |
以下に代表的な変換例を示します。
実例: int → string と double
using System;
namespace Conversion {
class Program {
static void Main(string[] args) {
int num = 100;
Console.WriteLine($"int value: {num}");
string str = Convert.ToString(num);
Console.WriteLine($"string value: {str}");
double dbl = Convert.ToDouble(num);
Console.WriteLine($"Double value: {dbl}");
Console.ReadLine();
}
}
}
出力
int value: 100 string value: 100 Double value: 100
実例: string ↔ double
using System;
namespace Conversion {
class Program {
static void Main(string[] args) {
string str = "99.99";
Console.WriteLine($"Original string value: {str}");
double dbl = Convert.ToDouble(str);
Console.WriteLine($"Converted Double value: {dbl}");
double num = 88.9;
Console.WriteLine($"Original double value: {num}");
string newStr = Convert.ToString(num);
Console.WriteLine($"Converted string value: {newStr}");
Console.ReadLine();
}
}
}
出力
Original string value: 99.99 Converted Double value: 99.99 Original double value: 88.9 Converted string value: 88.9
実例: int → bool
using System;
namespace Conversion {
class Program {
static void Main(string[] args) {
int num1 = 0;
int num2 = 1;
bool bool1 = Convert.ToBoolean(num1);
bool bool2 = Convert.ToBoolean(num2);
Console.WriteLine($"Boolean value of 0 is: {bool1}");
Console.WriteLine($"Boolean value of 1 is: {bool2}");
Console.ReadLine();
}
}
}
出力
Boolean value of 0 is: False Boolean value of 1 is: True
0 は false、0以外の整数は true と解釈されます。これらの変換技術をマスターすれば、型安全で表現力豊かなコードが書け、ランタイムエラーを減らし可読性を高められます。
C言語
- ASTM A1018 グレード CS タイプB 低炭素鋼の仕様と特性
- ASTM A424 グレード タイプII 鋼の仕様と性能
- ASTM A424 グレード タイプI 鋼の主要特性と性能
- ASTM A792 CSタイプA鋼 — 詳細特性と仕様
- ASTM A53 Grade A Type E 配管 - 仕様と主要特性
- ASTM A53 Grade A Type S 配管 - シームレス管の仕様と主要特性
- ASTM A792 Grade CS Type C 鋼板 - 55%アルミニウム亜鉛合金めっき鋼板の特性
- Python 型変換とキャスト: 包括的ガイド
- Pythonにおける数値、型変換、数学のマスター
- Java型キャスト完全ガイド:拡大変換から縮小変換まで
- Javaジェネリクス完全解説: 型安全性・汎用メソッド/クラス・境界型パラメータの活用