昨天遇到一个很奇怪的问题,代码中有声明一个private的dictionary对象,在方法中有对其进行Add键值对,但是经过多次加日志捕捉调试,发现整个项目在没有移除、删除这个dictionary元素或者里面的键值对的情况下,在某个方法中,竟然奇葩的发现dictionary对象中的所有键值对都被清空了,没错是没了,很见鬼!!!调试发现是有Add键值对的,代码我就不发出来了,我可以很肯定是有Add的!!!项目代码以前一直是运行正常的,程序现在就只有在一台电脑上运行不正常,在其他电脑上运行是正常的,后来我把dictionary对象声明为静态static,dictionary对象中的所有键值对就没有出现莫名其妙地被移除、删除了,程序运行正常了,太奇葩了,初步怀疑是那台电脑的环境存在问题,有哪位知道是什么原因?
100%是在另外一个对象里...
你看this的内存地址.
是同一个对象,所有有声明dictionary类型的对象元素的键值对都奇怪地被清空。
@青鋒: 看过地址确认了?
@吴瑞祥: 还没,但是类总共就new了一次,是在这个类中声明private的dictionary对象,类里面和这个dictionary类型的对象中键值对相同数据类型的dictionary类型,没有相同的啊,所以不可能有另外一个对象
@吴瑞祥: 我认为你的想法是对的,但现在困惑我的是为什么就只有这台电脑环境会这样,在其他电脑环境是正常的,不会在另外一个对象里
Add与读取Dictionary不在同一个对象
是同一个对象,所有有声明dictionary类型的对象元素的键值对都奇怪地被清空。
@青鋒: 建议提供一下相关代码,可能是代码中哪个地方将一个新的 Dictionary 实例赋值给了 dictionary
@dudu: 这种情况不存在
不贴代码你说个什么鬼,你打算向微软报告BUG吗?
呵呵,如果可以, 我真想揪着比尔盖子问他“你他娘的,搞得老子蛋疼得很”
show me your code