List内部的List在调用List.Clear()后返回Empty



在我的代码中,我确实有一个名为lstDetails的List
它包含另一个列表,名为lstcheckdetails
作为输出,lstcheckdetails在调用Clear函数时返回一个列表
直到现在,我还以为在向列表添加数据后,列表会被提交。

你能帮我吗?

List<AttendanceDetails> lstDetails = new List<AttendanceDetails>();
List<CheckDetails> lstcheckdetails = new List<CheckDetails>();
CheckDetails checkdetails = new CheckDetails();
for loop
{
if(condition)
{
checkdetails.Item1 = item1;
checkdetails.Item2 = item2;
lstcheckdetails.Add(checkdetails);

}
else
{
lstDetails.Add(new AttendanceDetails { TimeCard = lstcheckdetails });
lstcheckdetails.Clear();
}
}  

我建议阅读参考类型在C#中的工作原理。Jon Skeet一如既往,是一个值得倾听的好人。参考文献和价值观-然而,有很多关于这方面的来源

为了快速汇总引用,引用类型(顾名思义(是通过引用传递的,因此,除非您显式地复制该对象(在本例中使用.ToList()创建一个新列表(,否则新对象和循环都指向内存中的同一对象,这就是为什么称为.Clear()会清空您正在查看的两个位置的列表。

对你来说,一段快速修复的代码是。。。{ TimeCard = lscheckdetails.ToList()。。。这将创建列表的新副本,并允许您清除循环中的副本。

最新更新