C# 入門 & 実践 / C sharp

3-15. ボックス化!?


int などの値は、ラッパークラスではないので、オブジェクトではないが
ボックス化することで、オブジェクトとして利用できる。

使い方としては、

static public void SetObj( Object obj )

のようにObjectを引数とすることで、何でも受け付けるように出来るという使い方をするようです。

Console.WriteLine

のようなものは、int でも string でもそのまま表示できるのがボックス化を使っているそうです。

    class Hello
    {
        // 例えばこんな関数。
        static public void SetObj( Object obj )
        {
            Console.WriteLine("Object : {0} {1}", obj.GetType(),obj.ToString() );
        }
        static void Main(string[] args)
        {
            int i = 0;
            i++;
            Console.WriteLine("int : {0} {1}", i.GetType(), i.ToString() );

            // 自動的なボックス化
            SetObj(i);

            // 明示的なボックス化
            Object obj = i;
            // ↓これはintではないので出来ない。
            // obj++;
            // ボックス化の解除
            int j = (int)obj;
            j++;
            // と int に戻った。
        }
    }




3-14. 抽象クラス / abstract / override / sealed class « 3. C# 入門 / 基礎、型、文法、基本? » 3-16. nested class 入れ子クラス

C# 入門 & 実践 / C sharp