c# List<Dictionary<string,string>>添加字典数据的问题
c#List<Dictionary<string,string>>循环添加字典数据,但是奇怪的是,每添加完一个字典数据,我要Clear一下中转字典,但一Clear,整个L...
c# List<Dictionary<string,string>>循环添加字典数据,但是奇怪的是,每添加完一个字典数据,我要Clear一下中转字典,但一Clear,整个List<>的数据就空了,给我的感觉好像是List<>.add的字典数据,add的不是数据,是这些数据的指针位置,一把字典清掉,这些指针找不到数据,所以List就跟着空了。
求教这是什么原因?怎么解?
Dictionary<string, string> tempDic = new Dictionary<string, string>();
XDocument xDoc = XDocument.Load(Common.XMLPath);
//获取第一节点所有参数值
XElement xElement = xDoc.Element("System").Element(strElement1);
foreach (var tempElement in xElement.Elements())
{
tempDic.Add(p1_Value, tempElement.Attribute(p1_Value).Value.ToString());
tempDic.Add(p1_ItemName, tempElement.Attribute(p1_ItemName).Value.ToString());
Element1_ValList.Add(tempDic);
tempDic.Clear();
} 展开
求教这是什么原因?怎么解?
Dictionary<string, string> tempDic = new Dictionary<string, string>();
XDocument xDoc = XDocument.Load(Common.XMLPath);
//获取第一节点所有参数值
XElement xElement = xDoc.Element("System").Element(strElement1);
foreach (var tempElement in xElement.Elements())
{
tempDic.Add(p1_Value, tempElement.Attribute(p1_Value).Value.ToString());
tempDic.Add(p1_ItemName, tempElement.Attribute(p1_ItemName).Value.ToString());
Element1_ValList.Add(tempDic);
tempDic.Clear();
} 展开
1个回答
展开全部
Dictionary<string, string> tempDic = new Dictionary<string, string>();
改为
Dictionary<string, string> tempDic = null;
foreach (var tempElement in xElement.Elements())
{
tempDic = new Dictionary<string, string>(); //加上这行
tempDic.Add(p1_Value, tempElement.Attribute(p1_Value).Value.ToString());
后面的 tempDic.Clear();这行删了
List中保存的是对象的引用,你一clear,前面加入List中的值就受到影响,最终List中会添加进去n个空的Dictionary(这n个对象指向的都是同一个tempDic )
如果你在循环的外面加一个比如tempDic.Add("abc", "123"); 那你List里就会变成n个同样的东西
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询