Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字典添加到字典列表_C#_List_Dictionary_Add - Fatal编程技术网

C# 将字典添加到字典列表

C# 将字典添加到字典列表,c#,list,dictionary,add,C#,List,Dictionary,Add,我的代码如下所示: static void Main(string[] args) { List<Dictionary<string, string>> abc = new List<Dictionary<string, string>>(); Dictionary<string, string> xyz = new Dictionary<string, string>(); Dictionary&

我的代码如下所示:

static void Main(string[] args)
{
    List<Dictionary<string, string>> abc = new List<Dictionary<string, string>>();

    Dictionary<string, string> xyz = new Dictionary<string, string>();
    Dictionary<string, string> klm = new Dictionary<string, string>();

    xyz.Add("xyz_1", "4");
    xyz.Add("xyz_2", "5");

    klm.Add("klm_1", "9");
    klm.Add("klm_2", "8");

    abc.Add(xyz);
    xyz.Clear();
    /*after this code xyz clear in my abc list. Why ?*/
    abc.Add(klm);
}
我正在创建字典列表。然后我把字典添加到这个列表中。但当添加时,我在字典上运行clear函数,然后它也从我的列表中删除。通常我的“abc”列表应该有xyz和klm字典及其值。但运行清除后,xyz值计数将为0。如何防止这种情况发生?

这是因为xyz引用已添加到abc中。使用:


因为字典是引用类型。。。这意味着添加到列表中的对象和xyz引用的对象是同一个对象。清除其中一个对象时,它会影响指向同一对象的其他-2个引用
abc.Add(new Dictionary<string, string>(xyz));