集合已经被修改,不能使用枚举。

本文介绍了C#中List<EncyTable>的处理方法,包括如何通过ToList方法进行类型转换而不改变原始数据,以及如何避免在遍历过程中修改集合导致的错误。此外还探讨了值类型与引用类型的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public List<EncyTable> ListToJson (List<EncyTable> list)
{
List<EncyTable> listTemp = new List<EncyTable>();
int i;
listTemp = list.ToList<EncyTable>();//引用类型 转值类型
foreach (EncyTable item in list)
{
int up = item.UP_ENCY_ID;
listTemp.Remove(item);
i = 0;

foreach (EncyTable it in listTemp)
{
if (it == null)
continue;
if (it.ENCY_ID == up)
{
listTemp[i].EncyEntity = new List<EncyTable>();
listTemp[i].EncyEntity.Add(it);
break;
}
i++;
}
}
if (listTemp.Count == 0)
{
return listTemp;
}

return listTemp;
}

下面两句话是有区别的:

listTemp = list;

listTemp = list.ToList<EncyTable>();

第一句应用类型,遍历list 的时候如果修改了 listTemp 也就是修改了list,他们两个指向同一个地址。就像指针一样。

第二句则开辟了新的空间,并把list转成List<EncyTable>()(虽然本身就是这个类型的) 但是,下面修改listTemp 就不会报“ 集合已经修改,不能使用枚举操作。”

写一个随笔 记录下来。

 

 

 

转载于:https://www.cnblogs.com/90nice/archive/2013/05/28/3103696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值