首页 > 代码库 > C#中的类型转换

C#中的类型转换

    C#中的数据转换类型可以分为以下3种:隐式转换、显式转换、装箱和拆箱。

三种语言数据转换类型对比




隐式转换

 

    (1)这个比较简单且容易理解,以前老师也讲过。隐式转换是系统默认的、不需要加以声明就可以转换。在准换过程中编译器不需要对转换进行详细的检查就能安全地执行转换,Eg数据从int转换到long类型的转换。

    (2)C#中支持的隐式转换类型:



显示转换


    (1)即强制转换。需要用户明确指定转换类型。

     Eg:

        (int)1.23  //将double类型的1.23转换成int类型,结果为1

    (2)注意:显示转换可能会导致错误

              如果整形值超出目标类型的范围,转换异常

装箱和拆箱

    (1)装箱:是将一个值类型的数据隐式转换成一个对象类型的数据。把一个值类型装箱就是创建一个object类型的实例,并把该值类型的值赋给这个object对象。

Eg:

Int I = 10;
Object obj = i;             //隐式转换装箱


Int I = 10;
Object obj = (object)i;      //显式转换装箱

    分析:i及其值10是在栈空间中分配的,obj是引用类型变量,也是在栈空间中分配的,i装箱后变为引用类型,在堆空间中分配相应的空间,obj中包含地址。

   (2)拆箱:将引用类型的数据显式转换成一个值类型数据。分为两步:首先检查对象实例,确保它是给定值类型的一个装箱值,然后把实例类型复制到值类型数据中。

Eg:

Object obj = 10;
Int I = (int)obj;            //显示转换拆箱

   (3)区别:装箱隐式或显式转换均可,拆箱只能是显式转换。