//券是否已经被使用 #region 这个遍历的方法存在异常,List存在删除元素操作 //foreach (Data.Models.CreateOrder.T_BIZ_CONSUME consum in List_Cousums) //{ // if (consum.CONSUME_ISUSED == "T") // { // H2.DevMessageBox.ExclamationCenter("券号:" + consum.CONSUME_CODE + " " + consum.CONSUME_POLICYPRONAME + " " + "已出票!"); // List_Cousums.Remove(consum); // } //} #endregion //倒序遍历可以解决这个问题 for (int i = List_Cousums.Count - 1; i >= 0; i--) { if (List_Cousums[i].CONSUME_ISUSED == "T") { List_Cousums.RemoveAt(i); } }
正序遍历
for(int i=0;i<list.count;i++)
{
if(list[i])
{
list.RemoveAt(i);
}
}
如果这样循环,肯定不对,
{A B C D E F G H} 假设当前遍历到D(i=3),移除,接着遍历i=4(F), 此时跳过了E(i=3)
原文:http://www.cnblogs.com/xutianyu-Blogs/p/6553952.html