gpt4 book ai didi

c# - 为什么当我从 C#.net 中的不同变量中删除时它从其他变量中删除?

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:15 26 4
gpt4 key购买 nike

我有以下代码。如果数据不在 ValidClaimControl Numbers 中,我将根据以下条件删除 RecoveryRecords 变量中的数据。

RecoveryRecords.Remove(s) 处执行该行后,它也从 records 变量中删除。我实际上需要来自 records 变量的数据。

我想知道如何在 records 变量中保留数据?

List<List<Field>> records = new List<List<Field>>();
List<List<Field>> RecoveryRecords = new List<List<Field>>();

//Some Logic here to populate records variable

RecoveryRecords = records;
List<string> validClaimControlNo = new List<string>();

//Some Logic here to populate validClaimControlNo variable

foreach (List<Field> s in RecoveryRecords.ToList())
{
foreach (Field f in s)
{
if (!(validClaimControlNo.Contains(f.Value)))
RecoveryRecords.Remove(s);
}
}

最佳答案

我怀疑这条线不符合你的想法:

RecoveryRecords = records;

只是复制了records的值,这是对对象的引用,作为 RecoveryRecords 的新值.这两个变量引用同一个对象。如果您想要一个包含来自 records 的数据副本的新列表 ,您需要明确地这样做,例如

RecoveryRecords = new List<List<Field>>(records);

RecoveryRecords = records.ToList();

请注意,即使这样也只是列表的浅拷贝 - 如果您这样写:

RecoveryRecords[0].Add(new Field());

该更改将在 records[0] 中可见同样,因为它们都引用相同的 List<Field> .

关于c# - 为什么当我从 C#.net 中的不同变量中删除时它从其他变量中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12752273/

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