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();
}
展开
 我来答
syht2000
高粉答主

推荐于2017-09-21 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
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个同样的东西

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式