C# 装箱和拆箱的简单理解

时间:2021-11-11 03:05:44

一、装箱拆箱的意义

主要用途是可以向ArrayList中添加值类型的元素

二、理解

装箱的含义:理解为可以将子类对象隐式的转化为父类对象(保留自己特有的成员,和子类重写的成员)

装箱:例子为典型的装箱过程,,因为int为object的子类,故int 的对象可以隐式的转化为object的对象

int i=1;

object obj=i;

拆箱:需要显式的转化为值类型,但是必须是装箱过程中的类型,否则会拆箱失败,即装箱时是什么类型,拆箱就是什么类型。

(int)obj;

三、is方法

主要用于检测operand的对象能否转化为type对象,这就得看operand是否是type的子类了

is运算符的语法如下:
  <operand>is<type>
  这个表达式的结果如下
1.如果<type>是一个类类型,而<operand>也是这个类型,或者它继承了这个类型,或者它封箱到这个类型中,则结果为true.
2.如果<type>是一个接口类型,而<operand>也是这个类型,或者它是实现这个接口的类型,则结果为true;
3.如果<type>是一个值类型,而<operand>也是这个类型,或者它被拆箱到这类型中,则结果为true.

四、重载运算符:和普通的方法无太大的区别,主要是用static修饰和方法名变成了 operator 运算符

public static 类名 operator 运算符(参数)