C# 字典中的值被C中的最后一个值替换#
我有一个Dictionary类型变量,其中保留“string”类型键和“List”类型值 问题是,在循环的情况下,所有以前的值都被最后一个值替换 为什么会发生这种情况C# 字典中的值被C中的最后一个值替换#,c#,dictionary,C#,Dictionary,我有一个Dictionary类型变量,其中保留“string”类型键和“List”类型值 问题是,在循环的情况下,所有以前的值都被最后一个值替换 为什么会发生这种情况 List<IWebElement> indicationsElement = ReturnIndicationList(); drugsDB = new List<string>(); for (int i = 0; i < indicationsEle
List<IWebElement> indicationsElement = ReturnIndicationList();
drugsDB = new List<string>();
for (int i = 0; i < indicationsElement.Count;i++ )
{
string key = indicationsElement[i].Text.ToString();
dt = ZittarPatt.getDrugsByIndication(ClientName, key);
drugsDB.Clear();
for (int k = 0; k < dt.Rows.Count; k++)
{
drugsDB.Add(dt.Rows[k].ItemArray[3].ToString().Trim());
}
drugsByindicationDictionary.Add(key, drugsDB);
}
List indicationsElement=ReturnIndicationList();
drugsDB=新列表();
对于(int i=0;i
更改药物清除()代码>到drugsDB=新列表()代码>您在每次迭代中都添加相同的引用,而不是添加列表的新实例。
每次使用.Clear
时,它都会清除drugsByindicationDictionary
中已经是相同条目的所有条目。
因此,只有最后添加到drugsDB
的内容才会被保存。(否。末尾使用Clear
)
您应该执行以下代码:
List<IWebElement> indicationsElement = ReturnIndicationList();
for (int i = 0; i < indicationsElement.Count;i++ )
{
string key = indicationsElement[i].Text.ToString();
dt = ZittarPatt.getDrugsByIndication(ClientName, key);
var drugsDB = new List<string>();
for (int k = 0; k < dt.Rows.Count; k++)
{
drugsDB.Add(dt.Rows[k].ItemArray[3].ToString().Trim());
}
drugsByindicationDictionary.Add(key, drugsDB);
}
List indicationsElement=ReturnIndicationList();
对于(int i=0;i
列表
是一种参考类型。您将能够找到代码的错误。