C# 装箱,拆箱,向上转型,向下转型

2019-03-07  本文已影响0人  混世小码农

     c#中,数据类型分为值类型和引用类型,装箱和拆箱属于值类型和引用类型间的转换操作。

       装箱:值类型向引用类型转换时发生, 当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。

       拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。拆箱操作包括: 

      (1)检查对象实例,以确保它是给定值类型的装箱值。 

       (2)将该值从实例复制到值类型变量中

       向上转型:将子类对象转为父类对象,父类对象可以是接口。转化后的对象具有父类的所有方法,当该方法被子类重写时,具有的是被子类重写过的方法。若父类对象是接口或者抽象类,调用方法时,自动找到子类同名方法,执行子类同名方法。向上转换时安全的。如下图1:

图1

        向下转型:把父类对象转为子类对象,转化后的子类对象,跟一般的继承子类对象一样。具有子类所有方法(包括重写方法)+父类所有方法(被重写的方法,按重写的算。)向下转型属于不安全转型,使用转型对象时,需要先判断转型是否成功。其转型的约束条件为:该对象进行过向上转型,并把它转换为原来的类。如下图2:

图2
上一篇 下一篇

猜你喜欢

热点阅读