gpt4 book ai didi

c# - 创建列表的副本

转载 作者:行者123 更新时间:2023-11-30 13:37:59 24 4
gpt4 key购买 nike

我需要存储两个变量,然后检查它们是否没有改变。

List<CatalogInfo> list_catalogs = new List<CatalogInfo>();
List<FileInfo> list_files = new List<FileInfo>();
List<CatalogInfo> list_catalogs_for_check_changed = new List<CatalogInfo>();
List<FileInfo> list_files_check_changed = new List<FileInfo>();

当我这样做时:

list_catalogs_for_check_changed = list_catalogs;
list_files_check_changed = list_files;

但是当我添加到 list_catalogs 或 list_files 项目时,我在 debager 中看到项目添加到 list_catalogs_for_check_changed 或 list_files_check_changed。为什么???我不使用变量添加项目。

  list_catalogs.Add(new CatalogInfo() { Action = "Create", Path = folderBrowserDialog1.SelectedPath });

最佳答案

当你这样做时:

list_catalogs_for_check_changed = list_catalogs;

您不是在复制列表,您是在为同一个列表分配一个新的引用。如果您想创建一个包含相同项目的新列表,请执行以下操作:

    list_catalogs_for_check_changed = new List<CatalogInfo>(list_catalogs);

这会分配一个新的 List<CatalogInfo>并传递要从中复制元素的列表,从而产生两个具有相同项目的独立列表。

关于c# - 创建列表的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19629909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com