C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のobject型とは?ボックス化・アンボックス化の基本をサンプルコードで解説

C#のobject型とは

C#におけるobject型は、値型・参照型をはじめ、定義済みの型やユーザー定義の型など、あらゆる型の値を代入できる汎用的なデータ型です。ただし、実際に値を代入する際には適切な型変換が必要になる点に注意しましょう。

object型は、C#の共通型システム(CTS:Common Type System)においてすべてのデータ型に共通する最終的な基底クラスとして位置づけられています。また、C#のキーワード「object」は、.NETのSystem.Objectクラスのエイリアス(別名)です。

ボックス化とアンボックス化

object型と値型の間で行われる変換には、次の2種類があります。

  • ボックス化(boxing):値型をobject型に変換すること
  • アンボックス化(unboxing):object型を値型に変換すること

以下は、整数リテラルをobject型の変数に代入するシンプルな例です。この操作がボックス化に該当します。

object obj;
obj = 100; // これはボックス化

object型の使用例

続いて、object型の基本的な使い方を示す完全なサンプルプログラムを見てみましょう。

サンプルコード

using System;
using System.IO;

namespace Demo {
    class objectClass {
        public int x = 200;
    }

    class MyApplication {
        static void Main() {
            object obj;
            obj = 50;
            Console.WriteLine(obj);
            Console.WriteLine(obj.GetType());
            Console.WriteLine(obj.ToString());

            obj = new objectClass();
            objectClass newRef;
            newRef = (objectClass)obj;
            Console.WriteLine(newRef.x);
        }
    }
}

実行結果

50
System.Int32
50
200

コードのポイントとまとめ

この例では、まずobject型変数objに整数値50を代入し(ボックス化)、GetTypeメソッドで実際の型情報である「System.Int32」を取得しています。ToStringメソッドにより値も文字列として出力されます。

その後、独自に定義したクラスobjectClassのインスタンスをobjに代入し、明示的なキャスト「(objectClass)obj」によって元の型へ変換してから、フィールドxの値200を出力しています。

このようにobject型を活用すると、異なる型のデータを1つの変数で柔軟に扱うことができます。ただし、取り出す際には適切な型へのキャストが必要であり、誤った型へのキャストは実行時エラーの原因となるため注意が必要です。

  1. C言語の基本データ型を徹底解説!int・char・floatの種類とサイズ一覧

    C言語の基本データ型とは? C言語のコンパイラがサポートする基本データ型は、大きく分けて次の4つです。 整数型(Integer) 文字型(Character) 浮動小数点型(Floating-point) 倍精度浮動小数点型(Double precision floating point) プログラムで扱う値の種類(整数・文字・実数など)に応じて適切な型を選ぶことは、正確で効率的なコードを書くための第一歩です。なお、各データ型のサイズや表現できる値の範囲は、使用するコンパイラや実行環境によって異なる場合がある点に注意してください。 整数型(Integral Data Type) 整数型は

  2. Python 3の標準データ型とは?数値・シーケンス・辞書の基本をわかりやすく解説

    Python 3の標準データ型の概要Python 3に標準で用意されているデータ型は、大きく分けて「数値型」「シーケンス型」「辞書(ディクショナリ)型」の3つに分類できます。辞書はキーと値のペアを格納するコレクションであり、Pythonプログラミングにおいて最も頻繁に使われるデータ構造の一つです。数値型(Numeric Types)数値型には「整数(int)」「浮動小数点数(float)」「複素数(complex)」の3種類があります。整数(int):小数点を含まない整数値です。例:10、-10浮動小数点数(float):小数部分を持つ実数です。例:1.55、0.005複素数(complex)