C#中的拆箱和装箱
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 06:39:42
C#中的拆箱和装箱
![C#中的拆箱和装箱](/uploads/image/z/18722663-71-3.jpg?t=C%23%E4%B8%AD%E7%9A%84%E6%8B%86%E7%AE%B1%E5%92%8C%E8%A3%85%E7%AE%B1)
装箱 是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换.对值类型装箱会在堆中分配一
个对象实例,并将该值复制到新的对象中.
拆箱 是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换.
比如:装箱时,变为引用对象,会多出一个方法表指针,这会有何用处呢? 通过示例来进一步探讨.
例子:
Struct A : ICloneable
{
public Int32 x;
public override String ToString()
{
return String.Format(”{0}”,x);
}
public object Clone()
{
return MemberwiseClone();
}
}
static void main()
{
A a;
a.x = 100;
Console.WriteLine(a.ToString());
Console.WriteLine(a.GetType());
A a2 = (A)a.Clone();
ICloneable c = a2; Ojbect o = c.Clone();
}
个对象实例,并将该值复制到新的对象中.
拆箱 是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换.
比如:装箱时,变为引用对象,会多出一个方法表指针,这会有何用处呢? 通过示例来进一步探讨.
例子:
Struct A : ICloneable
{
public Int32 x;
public override String ToString()
{
return String.Format(”{0}”,x);
}
public object Clone()
{
return MemberwiseClone();
}
}
static void main()
{
A a;
a.x = 100;
Console.WriteLine(a.ToString());
Console.WriteLine(a.GetType());
A a2 = (A)a.Clone();
ICloneable c = a2; Ojbect o = c.Clone();
}