List.Foreach与C#的foreach的区别

几年前参加面试时就被提问过,现在面试别人时也经常提到这个问题。 今天小试了一下。得出如下几点:

1. 首先,mscorlib里System.Collections.Generic. List<T>类里有如下方法说明:

        //

        // 摘要: 

        //     对 System.Collections.Generic.List<T> 的每个元素执行指定操作。

        //

        // 参数: 

        //   action:

        //     要对 System.Collections.Generic.List<T> 的每个元素执行的 System.Action<T> 委托。

        //

        // 异常: 

        //   System.ArgumentNullException:

        //     action 为 null。

        public void ForEach(Action<T> action);

2. 对于修改集合里的项时,两者都可以实现。

 
   
foreach (var item in list)

{

                item.ApplyNo = "testNo" + list.IndexOf(item); }
list.ForEach(item => item.ApplyNo = "testNo" + list.IndexOf(item));

 

3. List.Foreach可以增删集合项,而foreach不行。

public static void Main()

{

    List<T_Info_PriorApplys> list = new List<T_Info_PriorApplys>();

    list.Add(new T_Info_PriorApplys() { });

    list.Add(new T_Info_PriorApplys() { });

    list.ForEach(item => item.ApplyNo = "testNo" + list.IndexOf(item));

    list.ForEach(p =>

    {

        if (p.ApplyNo == "testNo0")

        {

            list.Remove(p);

            list.Insert(0, new T_Info_PriorApplys { ApplyNo = "NewNo0-1" });

            list.Add(new T_Info_PriorApplys { ApplyNo = "NewNo0-2" });

        }



    });





    list.ForEach(item => Console.WriteLine(item.ApplyNo));

    Console.Read();

}



/* 运行结果:

NewNo0-1

testNo1

NewNo0-2

*/

 

你可能感兴趣的:(foreach)