问两个不太确定的问题:object a=10是不是属于装箱?

昵称是可以中文吗 2011-11-16 11:14:53
1.在C#中,可以通过装箱和拆箱实现值类型与引用类型之间相互转换,在下列代码中,有()处实现了装箱
int age = 5;
object o= age;
o=10;
age=(int)o;
object oAge =age;A.0 B.1 C.2 D.3
这里面有2个还是3个?
2.DataReader和DataSet一样,读取了第一条后还能反过来再去读取第一条记录。
上面这句话是错的,DataReader不能反过来读第一条记录,现在好奇Dataset能不能反过来再去读取第一条记录?
...全文
267 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
qxyywy 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 nanqi0506 的回复:]

引用 21 楼 qwertxp 的回复:

引用 10 楼 scauscnu 的回复:
不是int才属于值类型的吗

long不是值类型?bool呢?string呢?
.net中所有基本类型和结构都是值类型。

笑而不语


好吧,String又成了值类型了.
[/Quote]
wiki14 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jinfengyiye 的回复:]
怎么说o=10是装箱呢?
没有回收任何栈上的资源啊?
[/Quote]


在堆栈上创建对象引用 o,而在堆上则引用 int 类型的值。

是个装箱,隐式应用装箱操作。

详细自己去MSDN
gw6328 2011-11-16
  • 打赏
  • 举报
回复
装箱用于在垃圾回收堆中存储值类型。装箱是值类型(C# 参考)到 object 类型或到此值类型所实现的任何接口类型的隐式转换。对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。

而且微软上的没有任何一个地方提到,或例子中出现过 object a=10 这种是装箱操作。
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jinfengyiye 的回复:]
怎么说o=10是装箱呢?
没有回收任何栈上的资源啊?
[/Quote]
现在就是这个问题不确定,第二个问题已经解决了,先谢谢各位啦
gw6328 2011-11-16
  • 打赏
  • 举报
回复
怎么说o=10是装箱呢?
没有回收任何栈上的资源啊?
  • 打赏
  • 举报
回复
不是int才属于值类型的吗
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hbu_pig 的回复:]
1.3个;

object o= age; //装
o=10; //装
object oAge =age; //装

2.DataSet,可以读取第一条
把当时连接时的数据全部加载在内存中
datareader的数据是实时同步的,而dataset的数据是老的。
[/Quote]
网上看到有些答案是2,有些是3.
10是常数,常数是值类型吗?
qisutech 2011-11-16
  • 打赏
  • 举报
回复
此贴,纯理。好。
zhouenff8 2011-11-16
  • 打赏
  • 举报
回复
有3个装箱操作
new_staff 2011-11-16
  • 打赏
  • 举报
回复
对象是引用类型,当然是装啦
卧_槽 2011-11-16
  • 打赏
  • 举报
回复
3
wiki14 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 scauscnu 的回复:]
应该可以,我想。
[/Quote]

你猜对了。
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wiki14 的回复:]
1.3个;

object o= age; //装
o=10; //装
object oAge =age; //装

2.DataSet,数据全部加载在内存中,你说能不能返回去读?
[/Quote]
DataSet,数据全部加载在内存中,你说能不能返回去读?应该可以,我想。
欢乐的小猪 2011-11-16
  • 打赏
  • 举报
回复
1.3个;

object o= age; //装
o=10; //装
object oAge =age; //装

2.DataSet,可以读取第一条
把当时连接时的数据全部加载在内存中
datareader的数据是实时同步的,而dataset的数据是老的。
gw6328 2011-11-16
  • 打赏
  • 举报
回复
感觉不算。
我只道dataset里的表是可以读取第一条的。
wiki14 2011-11-16
  • 打赏
  • 举报
回复
1.3个;

object o= age; //装
o=10; //装
object oAge =age; //装

2.DataSet,数据全部加载在内存中,你说能不能返回去读?
神棍 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 qwertxp 的回复:]

引用 10 楼 scauscnu 的回复:
不是int才属于值类型的吗

long不是值类型?bool呢?string呢?
.net中所有基本类型和结构都是值类型。
[/Quote]

好吧,String又成了值类型了.
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 vrhero 的回复:]
16楼的解释哪里让你看出歧义来了?

o=10;

1.10是int值类型,o是object类型...

2.赋值时int类型的10隐式转换为object类型...

3.自己好好想想...
[/Quote]
恩恩,明白了,谢谢
qwertxp 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 scauscnu 的回复:]
不是int才属于值类型的吗
[/Quote]
long不是值类型?bool呢?string呢?
.net中所有基本类型和结构都是值类型。
vrhero 2011-11-16
  • 打赏
  • 举报
回复
16楼的解释哪里让你看出歧义来了?

o=10;

1.10是int值类型,o是object类型...

2.赋值时int类型的10隐式转换为object类型...

3.自己好好想想...
加载更多回复(4)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧