FunctionGHW

立志成为真正程序员的码农,伪全栈,目前主要写C#

在C#中,把一个值类型转化成引用类型的过程称为装箱(boxing)。这个引用类型可以是object类型,也可以是此值类型实现的任何接口类型。

        int num = 5;
        //引起装箱操作
        object o = num;
        

CLR会把值类型包装在一个对象内部。装箱的过程大致如下:

  1. 像创建其他引用类型的实例一样,在托管堆上为新对象分配需要的内存。
  2. 将值类型的字段值复制到新对象的对应字段。
  3. 返回这个对象的引用。

拆箱(Unboxing)的过程简单些。拆箱就是从一个装箱后的对象里获得一个指针的过程,这个指针指向该对象中的值类型的字段。拆箱之后往往都伴随着字段的复制(比如赋值操作):

        int val = (int)o;
        

继续阅读

C#对象初始化器语法小深入探讨

C#3.0提供了一个新的语法,对象初始化器(Object Initializers)。 该语法是为了简化一个常见的编程模式:构造一个新对象,逐个设置对象的公共属性。

继续阅读