当前位置: 代码迷 >> C# >> ArrayList 加入 Dictionary<string, decimal>的有关问题
  详细解决方案

ArrayList 加入 Dictionary<string, decimal>的有关问题

热度:564   发布时间:2016-04-28 08:35:31.0
ArrayList 加入 Dictionary<string, decimal>的问题

            
            Dictionary<string, decimal> maxgoods = new Dictionary<string, decimal>();
            maxgoods.Add("1", 258);
            maxgoods.Add("2", 152);

            ArrayList newgoodslist = new ArrayList();
            newgoodslist.Add(maxgoods);

            maxgoods.Clear();

            foreach (Dictionary<string, decimal> item in newgoodslist)
            {
                // maxgoods.Clear() 后  item 为何为空 ,有没有办法不为空
                foreach (KeyValuePair<string, decimal> litem in item)
                {
                    MessageBox.Show(litem.Key + "===" + litem.Value.ToString() + "||");
                }
            }



------解决思路----------------------
别调用maxgoods.Clear就行了
------解决思路----------------------
查下深copy,如果两个要互相不影响,只能深copy,而不是简单的赋值
------解决思路----------------------
  newgoodslist.Add(maxgoods);  这只是把对像给加入了 

maxgoods.Clear(); 。。。。 然后你清除了这个对象的子项。。
所以没了。。。
所以你要把这句去掉
------解决思路----------------------
不用定义这样一个中间变量。

ArrayList newgoodslist = new ArrayList(); 
//or
//List<Dictionary<string, decimal>> newgoodslist = new List<Dictionary<string, decimal>>();

newgoodslist.Add(new Dictionary<string, decimal>() { 
{ "1", 258 }, 
{ "2", 152 } 
});

------解决思路----------------------
newgoodslist.Add(new Dictionary<string,decimal>(maxgoods))
这样也就没关系了
  相关解决方案