设为首页 - 加入收藏 焦点技术网
热搜:java
当前位置:首页 >

C# - 在foreach中删除元素

2013-12-20 16:51:00.0 C# C# foreach 删除  
导读:在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。解决方法是采用for循环,并且从尾到头遍历。如果是从头到尾遍历,你将只会删掉一半的元素。如下所示:namespace CSharpLearning{ using System; using System.Collections.Generic; /// ...。。。

在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。

解决方法是采用for循环,并且从尾到头遍历。


如果是从头到尾遍历,你将只会删掉一半的元素。如下所示:

namespace CSharpLearning{    using System;    using System.Collections.Generic;    ///     /// The program.    ///     public class Program    {        ///         /// The main.        ///         public static void Main()        {            List integers = new List();            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;    ///     /// The program.    ///     public class Program    {        ///         /// The main.        ///         public static void Main()        {            List integers = new List();            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*/

(编辑: chimomo)

网友评论
相关文章