在for循环中删除JArray的元素

时间:2016-03-12 17:19:07

标签: c# arrays for-loop json.net

我试图在迭代时删除JArray的无效元素。在 foreach循环中执行此操作显然不起作用,因为它不希望数组变短。所以我决定使用 for循环。我是这样做的:

// data is my JArray, its elements are JObjects
for (int i = 0; i < data.Count; i++)
{
    if (!data[i].HasValues) { // checking if element is empty
        data[i].Remove();
        i--;
    }
}

当我测试它时,它工作正常。但我不确定它是否安全或者我是否幸运。例如,我不确定删除一个元素后元素的顺序是否保持不变。或者还有其他原因导致这种情况无效吗?

我认为最好的选择,如果这是不正确的,将是将所有有效元素复制到新数组。但这会导致很多开销。

1 个答案:

答案 0 :(得分:1)

您可以更好地手动执行此操作;当你发现&#34;错误&#34;要移除的元素,只需移动左侧的所有其他元素,从而覆盖您不想要的元素。但我认为你没有必要这样做。 (如果您在此请求中坚持不懈,请发表评论,我将为您提供相关代码。)

Remove()方法为您做到了这一点。元素插入或从集合中删除的大多数方法都以这种方式工作:它们在所需位置插入/删除元素,并将其他元素分别向右/左移动。

相关问题