Dictionary Dictionary -dic = new Dictionary();Hashtable -ht

学习 时间:2026-05-30 14:32:55 阅读:8364
Dictionary Dictionary _dic = new Dictionary();Hashtable _ht = new Hashtable();while (_dr.Read()){_ht.Clear();for (int i = 0; i < _dr.FieldCount; i++){_ht.Add(_dr.GetName(i),_dr[i]);}_dic.Add(_i,_ht);_i++;}我原本是想循环记录集并将其添加到hashtable中,再将记录依次添加到dictionary里.但是每次循环后,dictionary里hashtable的值都变掉了(就是dictionary 和 dictionary里的所有hashtable都同步更新,都是一个值.),该怎么改才能实现我要的结果呢?

最佳回答

乐观的紫菜

典雅的小熊猫

2026-05-30 14:32:55

Dictionary _dic = new Dictionary();Hashtable _ht;while (_dr。Read()){_ht=new Hashtable(); // 每个循环都创建一个新的对象for (int i = 0; i < _dr。FieldCount; i++){ _ht。Add(_dr。GetName(i), _dr[i]);} _dic。Add(_i, _ht); _i++;}dictionary放的是hashtable对象的引用。因为你只new 了一个hashtable对象,当然会出现同步更新的现象了。解决办法是每个循环都new一个hashtable对象。

最新回答共有2条回答

  • 怕孤独的雪糕
    回复
    2026-05-30 14:32:55

    Dictionary _dic = new Dictionary();Hashtable _ht;while (_dr。Read()){_ht=new Hashtable(); // 每个循环都创建一个新的对象for (int i = 0; i < _dr。FieldCount; i++){ _ht。Add(_dr。GetName(i), _dr[i]);} _dic。Add(_i, _ht); _i++;}dictionary放的是hashtable对象的引用。因为你只new 了一个hashtable对象,当然会出现同步更新的现象了。解决办法是每个循环都new一个hashtable对象。

上一篇 starve sb.into doing sth.怎么翻译?

下一篇 食物链能量流动问题草→鼠→鹰 和 草→鼠→蛇→鹰两条食物链为什么说第一条中鹰获得的能量多,虽然能量是逐级递减,可蛇为了活