【C#】ボクシングとアンボクシング
ボクシング(Boxing)は、C#において値型(例えば、intやboolなど)をobject型やインターフェイス型などの参照型に変換するプロセスのことを指します。
ボクシングの仕組み
値型はスタックに格納される軽量なデータ型で、メモリ管理が効率的です。一方、object型などの参照型はヒープに格納され、より柔軟ですがメモリ管理が複雑になります。
ボクシングが行われると、以下のような処理が行われます:
- 値型のデータがヒープにコピーされ、新しいオブジェクトが生成されます。
 - そのオブジェクトへの参照が作成され、これが
object型の変数に格納されます。 
ボクシングの例
int num = 123;          // 値型(int)
object obj = num;       // ボクシング:numがobject型に変換される
アンボクシング(Unboxing)
逆に、ボクシングされたobject型のオブジェクトを再び値型に戻すプロセスをアンボクシング(Unboxing)といいます。
アンボクシングの例
int num = 123;          // 値型(int)
object obj = num;       // ボクシング
int num2 = (int)obj;    // アンボクシング
アンボクシングを行う際は、元の値型に明示的にキャストする必要があります。間違った型にキャストするとランタイムエラーが発生します。
ボクシングの注意点
ボクシングとアンボクシングはパフォーマンスに影響を与えることがあります。特にループ内で頻繁に行われると、オーバーヘッドが増加し、アプリケーションのパフォーマンスが低下する可能性があります。そのため、可能であればボクシングを避け、ジェネリック型(List<T>など)を使用するのが推奨されます。
ボクシングの理解は、C#の型システムやパフォーマンスの最適化において非常に重要です。
訪問数 64 回, 今日の訪問数 1回






ディスカッション
コメント一覧
まだ、コメントがありません