C#装箱和拆箱操作实例分析

本文实例讲述了c#装箱和拆箱操作。分享给大家供大家参考,具体如下:

1. c#中的装箱

c#中的装箱就是把一个值类型隐式地转换为object类型,转换过程中采用的是值的拷贝而不是引用,这从下面的例子可以看出:

using system;
public class test
{
  public static void main(string[] args)
  {
    int i = 10;
    //将值类型的i装箱
    //需要注意的是:这里的装箱采用的是值的拷贝
    object obj = i;
    //检验是否装箱成功了
    if(obj is int)
    {
     console.writeline("数据已经装箱!");
    }
    //我们在这里更改i的值
    i = 33;
    console.writeline("int i现在的值是:{0}",i);
    console.writeline("int i装箱的值是:{0}",obj);
  }
}

2. c#中的拆箱

c#中的拆箱就是把一个对象类型显式地转换为值类型注意:要转换的类型必须和值类型是兼容的。举例如下:

int i = 10;
object obj = i;
int j = (int)obj;

在这里需要注意的是:

装箱和拆箱是非常影响程序性能的,在代码中应避免装箱和拆箱的操作。可以使用泛型来减少这样的操作。

更多关于c#相关内容感兴趣的读者可查看本站专题:《c#窗体操作技巧汇总》、《c#常见控件用法教程》、《winform控件用法总结》、《c#程序设计之线程使用技巧总结》、《c#操作excel技巧总结》、《c#中xml文件操作技巧汇总》、《c#数据结构与算法教程》、《c#数组操作技巧总结》及《c#面向对象程序设计入门教程》

希望本文所述对大家c#程序设计有所帮助。

相关推荐:

如何在Python中对NumPy数组进行转置与轴换位操作?

NumPy数组转置与轴换位本质相同但接口语义不同:.T仅适用于二维数组的简单转置,三维及以上会完全反转轴序;精确控制需用np.transpose()、np.swapaxes()或np.moveaxis()。 NumPy数组的转置和轴换位本质是同一类操作,但接口不同、语义侧重不同:用.T或np.tra...

如何修复Python类属性被所有实例共享的逻辑Bug?

因为类属性在定义时初始化且所有实例共享同一可变对象,导致修改一个实例影响其他实例;正确做法是将可变对象初始化移至__init__中,确保每个实例拥有独立副本。 为什么list、dict作为类属性会导致实例间数据污染? Python中类属性在类定义时就完成初始化,且只执行一次。如果用可变对象(比如[]...

动态执行代码时正确访问类实例:在 exec 中安全使用 self

本文详解如何在Python类方法中通过exec动态定义函数,并使其能安全访问当前实例(self)的属性与方法,适用于调试交互场景(如pdb会话)及用户驱动的动态函数生成需求。 本文详解如何在python类方法中通过`exec`动态定义函数,并使其能安全访问当前实例(`self`)的属性与方法,适用于...