首页 新闻 会员 周边

c# dictionary中的键值对突然被清空

0
悬赏园豆:20 [待解决问题]

昨天遇到一个很奇怪的问题,代码中有声明一个private的dictionary对象,在方法中有对其进行Add键值对,但是经过多次加日志捕捉调试,发现整个项目在没有移除、删除这个dictionary元素或者里面的键值对的情况下,在某个方法中,竟然奇葩的发现dictionary对象中的所有键值对都被清空了,没错是没了,很见鬼!!!调试发现是有Add键值对的,代码我就不发出来了,我可以很肯定是有Add的!!!项目代码以前一直是运行正常的,程序现在就只有在一台电脑上运行不正常,在其他电脑上运行是正常的,后来我把dictionary对象声明为静态static,dictionary对象中的所有键值对就没有出现莫名其妙地被移除、删除了,程序运行正常了,太奇葩了,初步怀疑是那台电脑的环境存在问题,有哪位知道是什么原因?

青鋒的主页 青鋒 | 初学一级 | 园豆:5
提问于:2018-06-16 09:19
< >
分享
所有回答(4)
0

100%是在另外一个对象里...

你看this的内存地址.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-06-16 09:59

是同一个对象,所有有声明dictionary类型的对象元素的键值对都奇怪地被清空。

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 10:10

@青鋒: 看过地址确认了?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2018-06-16 10:14

@吴瑞祥: 还没,但是类总共就new了一次,是在这个类中声明private的dictionary对象,类里面和这个dictionary类型的对象中键值对相同数据类型的dictionary类型,没有相同的啊,所以不可能有另外一个对象

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 10:23

@吴瑞祥: 我认为你的想法是对的,但现在困惑我的是为什么就只有这台电脑环境会这样,在其他电脑环境是正常的,不会在另外一个对象里

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 12:41
0

Add与读取Dictionary不在同一个对象

dudu | 园豆:30994 (高人七级) | 2018-06-16 10:03

是同一个对象,所有有声明dictionary类型的对象元素的键值对都奇怪地被清空。

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 10:10

@青鋒: 建议提供一下相关代码,可能是代码中哪个地方将一个新的 Dictionary 实例赋值给了 dictionary

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2018-06-16 14:49

@dudu: 这种情况不存在

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 15:58
0

不贴代码你说个什么鬼,你打算向微软报告BUG吗?

西漠以西 | 园豆:1675 (小虾三级) | 2018-06-16 11:26

呵呵,如果可以, 我真想揪着比尔盖子问他“你他娘的,搞得老子蛋疼得很”

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2018-06-16 12:45
0

show me your code

jello chen | 园豆:7336 (大侠五级) | 2018-06-16 20:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册