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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 装箱和拆箱的简单理解相关的知识,希望对你有一定的参考价值。

一、装箱拆箱的意义

主要用途是可以向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 运算符(参数)

{

  return ;

}  

 

以上是关于C# 装箱和拆箱的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

自动装箱和拆箱的几个细节

装箱和拆箱的性能损耗以及没有装箱和拆箱的性能损耗

c# 泛型为啥能解决装箱拆箱问题

java 啥是拆箱和装箱,拆箱和装箱 嘛用啊???

[C#] 装箱和拆箱(整理中)

全面理解java自动装箱和拆箱(转)