暗中装箱 拆箱和向下转型

reference型别由一对handle/object实现,一是我们在程序中操控的“具名(handle)”在受控堆(managed heap)上分配一个不具名的object。

value object内直接包含数据。

讲value型的数据赋值给reference类型的变量,需要进行暗中装箱操作。

1、在受控堆内分配一快空间,准备用来持有value object值。

2、讲value object值复制到箱内

3、将箱子的“managed heap”地址赋予object object。

 

相反的过程就是拆箱。

 

向下转型:

string s="cat";

object o=s;

if(o.Length!=3) //发生错误

 

因为原型别(string)的所有型别信息都遗失了,要是我们想访问string的Length属性,显得把object转为string,而object不会自动转换为另一种型别:

用操作符 is和 as

string str;

 

if( o is string)

 str = (string) o;

 

string str= o as string

if(str!=null)

{

//ok:o does reference a string

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值