还是不能偷懒-ForEach陷阱

class Program
    {
        static void Main(string[] args)
        {
            List<string> st = new List<string>();
            st.Add("A");
            st.Add("B");
            //st.Add("C");

            bool isF = false;
            st.ForEach(p =>
            {
                if (!isF)
                {
                    st.Remove("A");
                    isF = true;
                }
                Console.WriteLine(p);
            });
        }
    }

打印如下:

 

再来比较(使用的同学注意喽):

class Program
    {
        static void Main(string[] args)
        {
            List<string> st = new List<string>();
            st.Add("A");
            st.Add("B");
            st.Add("C");

            bool isF = false;
            st.ForEach(p =>
            {
                if (!isF)
                {
                    st.Remove("B");
                    isF = true;
                }
                Console.WriteLine(p);
            });
        }
    }


打印如下:

实际项目中使用ForEach方法的同学注意咯!小心数量为2时移除第一元素后面就没有继续遍历咯?原因呢?高手在哪里?

posted @ 2013-04-19 13:05  Go和分布式IM  阅读(205)  评论(0编辑  收藏  举报