分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。
解决方法是采用for循环,并且从尾到头遍历。
如果是从头到尾遍历,你将只会删掉一半的元素。如下所示:
namespace CSharpLearning{ using System; using System.Collections.Generic; /// <summary> /// The program. /// </summary> public class Program { /// <summary> /// The main. /// </summary> public static void Main() { List<int> integers = new List<int>(); for (int i = 0; i < 100; i++) { integers.Add(i); } for (int i = 0; i < integers.Count; i++) { integers.Remove(integers[i]); } Console.WriteLine(integers.Count); } }}// Output:/*50*/
正确的做法是从尾到头遍历,如下所示:
namespace CSharpLearning{ using System; using System.Collections.Generic; /// <summary> /// The program. /// </summary> public class Program { /// <summary> /// The main. /// </summary> public static void Main() { List<int> integers = new List<int>(); for (int i = 0; i < 100; i++) { integers.Add(i); } for (int i = integers.Count - 1; i >= 0; i--) { integers.Remove(integers[i]); } Console.WriteLine(integers.Count); } }}// Output:/*0*/
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e19ffb3303a490d20ea5d00dd397156.gif)