c# - 如何复制列表并在 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();
}
}
解决方案
问题是:
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 时,在上述行中创建的新列表将保持不变。
推荐阅读
- html - 如何使用 CSS 模糊覆盖在图像顶部的视频边缘?
- java - 如何将列表字符串拆分为字符串数组
- reactjs - 按城市 React/javaScript 搜索此 api
- python-3.x - 获取用户输入和使用 Pandas DataFrame 从 LEFT JOIN 提取数据时出错
- netty - netty 事件是否可以优先处理(到事件队列的头部)
- python - Pandas 多索引数据帧的条件合并
- c++ - 将谷歌测试集成到现有 CMake 项目时出错
- javascript - 如何从地图中计算布尔值
- sql - SQL Server 查询上次移动的项目
- mysql - Vue节点Mysql——Mysql表加入