C# 字典中的值被C中的最后一个值替换#

C# 字典中的值被C中的最后一个值替换#,c#,dictionary,C#,Dictionary,我有一个Dictionary类型变量,其中保留“string”类型键和“List”类型值 问题是,在循环的情况下,所有以前的值都被最后一个值替换 为什么会发生这种情况 List<IWebElement> indicationsElement = ReturnIndicationList(); drugsDB = new List<string>(); for (int i = 0; i < indicationsEle

我有一个Dictionary类型变量,其中保留“string”类型键和“List”类型值

问题是,在循环的情况下,所有以前的值都被最后一个值替换

为什么会发生这种情况

        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
列表
是一种参考类型。您将能够找到代码的错误。