拆箱和装箱

什么是拆箱和装箱:

"装箱"(Boxing)和"拆箱"(Unboxing)是类型转换的两个重要概念,主要涉及值类型(如 int, bool, struct 等)和引用类型(如 object 类型)之间的转换。

为什么int类型转换为string类型不是装箱

装箱是值类型转换为引用类型,特别是‘object’类型或其它该值类型的接口类型的过程。值类型的值复制到堆上分配的新对象中。

但是

int转string的过程没有创建新的引用类型来封装原始的值类型。只是创建了新的字符串对象。

struct拆装箱示例

装箱:

struct MyStruct : IComparable
{
    public int Value;

    public int CompareTo(object obj)
    {
        if (obj is MyStruct)
        {
            return Value.CompareTo(((MyStruct)obj).Value);
        }
        throw new ArgumentException("Object is not a MyStruct");
    }
}

MyStruct myStruct = new MyStruct { Value = 5 };
IComparable comparable = myStruct; // 装箱操作

拆箱:

IComparable comparable = new MyStruct { Value = 5 };
MyStruct myStruct = (MyStruct)comparable; // 拆箱操作

你可能感兴趣的:(C#,c#)