List<int> list = new List<int>() { 1, 2, 3, 4 };
for (int i = 0; i < sz; i++)
{
if (i == 1 || i == 2)
list.RemoveAt(i);
}
在迭代过程中删除数组元素会有很大的问题,例如删除后位置移动,导致不该被删除的元素被删除。还可能导致数组越界
using System.Linq; // Where在Linq里
List<int> list = new List<int>() { 1, 2, 3, 4 };
int sz = list.Count;
list = list.Where((val, idx) => (idx != 1 && idx != 2)).ToList();
可以用一个副本记录
List<int> list = new List<int>() { 1, 2, 3, 4 };
List<int> list_backup = new List<int>();
int nIndex = 0;
int sz = list.Count;
//list = list.Where((val, idx) => (idx != 1 && idx != 2)).ToList();
for (int i = 0; i < sz; i++)
{
if (i == 1 || i == 2)
{
//list.RemoveAt(i);
}
else
{
list_backup.Add(list[i]);
}
}
list = list_backup;