简单的类型问题

[复制链接]
查看11 | 回复4 | 2008-7-25 11:56:57 | 显示全部楼层 |阅读模式
int a=5;
a= b;
b= 6;
问a=多少?
其中box和unbox都在那里怎么进行的?
答得好的50分送上!
object b;

回复

使用道具 举报

千问 | 2008-7-25 11:56:57 | 显示全部楼层
呵呵,我来回答你这三条是错的,首先b没有被定义如果上面有 int b; 这句的话,那么a的值为null因为b只是被定义,没有被赋值,如果上面有int b=0;的话那么a=0box和unbox是装箱和拆箱的操作这就要牵扯到引用类型和值类型的问题了object。类类型和数组以及ref的是属于引用类型int,string之类的是值类型当把值类型的转换为引用类型时就是装箱操作,反之则是拆箱操作,ArrayList是数组集合,当往里面添加元素时执行的是装箱,取值的时候执行的是拆箱
回复

使用道具 举报

千问 | 2008-7-25 11:56:57 | 显示全部楼层
object a;int b = 5;a = b;
//boxint c = (int)a; //unbox将值类型装到引用类型中时进行装箱,将值取出来的时候强行转换为原来的类型,这个地方是拆箱。装箱拆箱在性能上有一定损耗,拆箱的时候要进行类型转换,将面临类型不安全的问题。
回复

使用道具 举报

千问 | 2008-7-25 11:56:57 | 显示全部楼层
没看到B在哪里申明没法做! 要么这个题就是错误滴!补充:还是没法做撒!如果b是属性的话那么赋值给a的时候为null如果是局部变量的话!那么没有初始值编译都过不去!我可是按着问题来回答的!坚决不说废话!
回复

使用道具 举报

千问 | 2008-7-25 11:56:57 | 显示全部楼层
b都没有定义,即使定义也要先赋值才能在表达式中使用box和unbox一般都是不同类型的转换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行