在数组中循环筛选数据并给剔除出来,我们通常使用for循环。foreach不支持操作循环中的数组,会报错。
示例代码如下:
List<int> temp=new List<int>() {1,2,3,4,5,6};
for (int i = 0; i < temp.Count; i++)
{
Debug.Log(temp[i]);
if (temp[i] == 1)
temp.RemoveAt(i);
}
打印结果为:1,3,4,5,6.可以看出当我们移除第一个元素后,之后的元素索引依次向前。所以我们打印不到数据2.这个在数组操作中很容易出现错误。解决方案就是:我们复制一个新的数组并且在新数组里循环,在旧数组中操作加减数据。代码如下:
List<int> temp = new List<int>() { 1, 2, 3, 4, 5, 6 };
List<int> newList=new List<int>(temp);//只需做个数组浅复制即可
for (int i = 0; i < newList.Count; i++)
{
Debug.Log(newList[i]);
if (newList[i] == 1)
temp.Remove(newList[i]);
}
今天就是在做数据处理时被这个小问题卡了好久,导致计算结果不正确。