C#装箱与拆箱问题

[复制链接]
查看11 | 回复2 | 2008-11-3 21:55:54 | 显示全部楼层 |阅读模式
i=2000;
object o=i;
i++;
int j=(int)o;
Console.WriteLine("i={0},o={1},j={3}",i,o,j);
结果是多少,为什么?

回复

使用道具 举报

千问 | 2008-11-3 21:55:54 | 显示全部楼层
i=2001,o=2000,j=2000j和i相等等容易理解,因为他们是同一个对象的引用。object o=i;的过程中对i进行装箱操作,o变成了i的一个副本,所以,对i后来进行的加一操作,对o是无效的。...
回复

使用道具 举报

千问 | 2008-11-3 21:55:54 | 显示全部楼层
这里写错了:Console.WriteLine("i={0},o={1},j={3}",i,o,j); j={3} 应该是 j={2}。结果是:2001 2000 2000 。装箱是指值类型转换为引用类型。int是值类型,object是引用类型。 i=2000; object o=i; 就是装箱。拆箱则相反,引用类型转换为值类型。in...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行