首页 > 解决方案 > 如何复制列表并在 list.clear() 之后保留项目;

问题描述

我一直在尝试将列表添加到字典<int, struct Arts>。

当我添加它时,然后清除列表,如 list.clear(); 然后

我在字典中复制的信息也都被清除了。

请问我该如何解决这个问题?

for (int i = 0; i < current_artslist1.Count; i++)//
                {
                    cnt++;
                    tmp_list1.Add(current_artslist1[i]);
                    if (cnt == limit)
                    {
                        art_small_page++;
                        cnt = 0;       
                        artdict_small_tmp.Add(art_small_page, tmp_list1);
                        tmp_list1.Clear();
                    }                    
                }

标签: c#list

解决方案


问题是:

artdict_small_tmp.Add(art_small_page, tmp_list1);

不从列表中添加“项目”。它添加了对 tmp_list1 的引用,然后您将对其进行清除。因此,对该列表的引用指向已清除的列表。

使用 .ToList() 获取列表中项目的副本并将它们放入新列表中:

artdict_small_tmp.Add(art_small_page, tmp_list1.ToList());

这会添加一个包含 tmp_list1 中的项目的新列表,而不是对 tmp_list1 的引用。

现在,当您清除 tmp_list1 时,在上述行中创建的新列表将保持不变。


推荐阅读