首页 新闻 会员 周边 捐助

c# 问题 高手帮忙

0
[已解决问题] 解决于 2012-10-11 21:27
为什么第一种情况,(注释掉那部分) obj 能获取对象b中对象的最新值,而第二种方式只能得到第一次的数据。不能随着b中的dic的改变而改变??
彬彬@科比的主页 彬彬@科比 | 初学一级 | 园豆:43
提问于:2012-09-04 22:35
< >
分享
最佳答案
0

这个是这样的:

其实你只要理解了引用类型在堆中的分配,就很简单了,

注释部分:new Dictionary<int,DateTime>()是在内存堆中分配了一块内存,并且将引用赋给了自动属性生成的默认字段,使字段指向那个地址,后面向字典中添加键值对时,是向同一个对象添加的;而后面没注释的那个则是每次你取b.dic时都会执行result=new Dictionary<int,DateTime>()这句,也就是会在堆中创建新的对象,并分配空间,意思就是说每次都不是同一个对象了

奖励园豆:5
ajie1166 | 菜鸟二级 |园豆:249 | 2012-09-05 23:21
其他回答(3)
0

对象引用的对象变掉了。所以,就那个啥了。

峰X | 园豆:8 (初学一级) | 2012-09-04 22:38

 Dictionary<int, DateTime> result = new Dictionary<int, DateTime>(); ??因为这个嘛??

public Dictionary<int, DateTime> dic 不是引用类型嘛??可否说清楚点。谢了

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-09-04 22:40

@彬彬@科比: 你第二次  b的值变化了吗?  不还是B类第一次初始化的值,是第一次的值才是对的,

支持(0) 反对(0) 峰X | 园豆:8 (初学一级) | 2012-09-04 22:59

@彬彬@科比: 断点跟下。看看值的变化。就一清二楚了

支持(0) 反对(0) 峰X | 园豆:8 (初学一级) | 2012-09-04 23:02
0
b.dic=new Dictionary<int,DateTime>();这句都错了,不知道你第一种情况,(注释掉那部分) obj 能获取对象b中对象的最新值的结果怎么的出来的
心安处即吾乡 | 园豆:202 (菜鸟二级) | 2012-09-05 13:39
0

楼上说的好上有点意思

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-09-06 10:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册