堆和栈&值类型和引用类型&拆箱和装箱

  当你在一个.NET应用程序中声明一个变量时,手想要分配一些内存块到RAM,它包括三样东西,变量名、数据类型、变量的值。根据变量的类型不同,有两种内存分配类型:堆栈内存和堆内存。

  明确数据大小或是是否存在动态变化,是变量分配到堆还是堆栈的依据:定——堆栈,不定——堆。

  数据从值类型一道引用类型——装箱,反之为拆箱。

  引用类型之间的转换,堆上内存重新分配。

  隐式转换总会成功的情况,不会抛出异常:

  1、从派生类到基类;

  2、从派生接口到基接口;

  3、从类到接口(该类实现了接口);

  4、从Null到任何类;

  显式引用转换,以下可能抛出异常,转换不一定成功:

  1、从基类到派生类;

  2、从接口到接口(基接口到派生接口或者俩接口没有关系);

  3、从接口到类(该类实现了该接口或该类未封闭);

  4、从类到接口(该类未实现该接口且该类未封闭);

is运算符返回一个Bool值,因此,如果只想确定对象的类型,而无需对它进行实际强制转化,则可以使用is运算符;

  

原文地址:https://www.cnblogs.com/super86/p/2772183.html