代码之家  ›  专栏  ›  技术社区  ›  Azhar

我们在哪里用拳击?拳击有什么用?

  •  0
  • Azhar  · 技术社区  · 14 年前

    根据定义,我们知道

    Boxing – Converts value-type TO reference type. Stored on heap.
    UnBoxing – Converts reference type TO value-type. Stored on stack.
    

    但为什么要将值类型转换为引用类型,或者将变量从堆栈推到堆栈,或者从堆推到堆栈。

    这样做的优点或缺点是什么?

    我们这样做能得到什么。这有什么用?

    我们希望将值类型转换为引用类型或将变量从堆栈推送到堆。我们想用堆实现的,我们不能用堆实现的,或者用堆取消装箱,我们不能用堆实现的。

    我知道这个典型的例子

    Int32 x = 10; 
    object o = x ;  // Implicit boxing
    
    Int32 y = 10; 
    object obj = (object) y; // Explicit Boxing
    
    x = o; // Implicit UnBoxing
    

    请再给我些。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Dean Harding    14 年前

    ArrayList 数组列表 只适用于 object s)。

    但您将使用装箱的主要地方是只接受对象的函数调用。最明显的例子是 Console.WriteLine (或) string.Format )它将参数视为 对象 例如:

    int n = 1234;
    Console.WriteLine("A number: {0}", n);
    

    整数 n 被装箱 对象