C# 清除所有数组列表数据
为什么下面的代码不清除所有数组列表数据C# 清除所有数组列表数据,c#,C#,为什么下面的代码不清除所有数组列表数据 Console.WriteLine("Before cleaning:" + Convert.ToString(ID.Count)); //ID.Count = 20 for (int i = 0; i < ID.Count; i++) { ID.RemoveAt(i); } Console.WriteLine("After cle
Console.WriteLine("Before cleaning:" + Convert.ToString(ID.Count));
//ID.Count = 20
for (int i = 0; i < ID.Count; i++)
{
ID.RemoveAt(i);
}
Console.WriteLine("After cleaning:" + Convert.ToString(ID.Count));
//ID.Count = 10
Console.WriteLine(“清洗前:+Convert.ToString(ID.Count));
//ID.计数=20
对于(int i=0;i
为什么10会打印到屏幕上
也许还有另外一个特殊的功能,可以删除所有内容
ArrayList.Clear Method
Removes all elements from the ArrayList.
有关详细信息:请使用clear()方法
或
更改ID.RemoveAt(i)代码>到ID.RemoveAt(0)代码>
每当从集合中删除元素时,其索引也会更改。因此,当您说ID.RemoveAt(0)时代码>索引1处的元素现在将移动到索引0。因此,您必须再次删除相同的元素(如出列)。直到到达最后一个元素。但是,如果要一次删除所有元素,最好使用Clear()方法。删除10项后,ID.Count()==10
和i==10
,因此循环停止
用于删除数组列表中的所有项。您实际上只调用了RemoveAt
10次。当i
达到10时,ID.Count
也将为10。您可以通过执行以下操作来解决此问题:
int count = ID.Count;
for (int i = 0; i < originalCount; i++)
{
ID.RemoveAt(0);
}
但是使用ID.Clear()
可能比所有这些更有效,即使它也是O(n)。您的代码可以:
ID.RemoveAt(0);
...
ID.RemoveAt(9);
ID.RemoveAt(10); \\ at this point you have already removed 10
\\ items so there is nothing left on 10- 19, but you are left with
\\ the 'first' 10 elements
...
ID.RemoveAt(19);
一般来说,您的方法会从列表中删除第二个元素
正如其他人所提到的那样使用
`Array.Clear()`
删除数组中的所有项
`Array.RemoveAt(i)`
删除数组中第i个索引的元素。第一次通过循环删除位置0处的项。列表中现在有19个项目,位置1处的项目现在移动到位置0,2->1,3->2等。第二次通过循环,您删除位置1处的项目(以前是项目2)。您已跳过位置0处的项目(以前是项目1)。这样,您就可以从列表中删除每一项。
`Array.RemoveAt(i)`
`Array.RemoveAt(i)`