int []arr={1,2,3,4};
Array.ForEach(arr,a=>a+=10);
Array.ForEach(arr.a=>Console.WriteLine(a));输出的结果不变啊

解决方案 »

  1.   

    因为Action<T>委托不返回值...而迭代器从一开始到现在都是只读的...没事儿看看MSDN...
      

  2.   

    也不关返回值的事,例如下例就可以改变各元素。关键是你要修改的是参数,还是参数的成员。修改参数是毫无意义的,因为那是值传递形成的原始值的副本。同样,参数是值类型的结构的话,修改其成员也没有意义,因为结构的成员也是堆栈上的副本。using System;class A

        public int i=1;
    }
    class main
    {
        static void Main()
        {
            A[] arr = new A[] { new A(), new A(), new A(), new A() };
            Array.ForEach<A>(arr, delegate(A a) { a.i = 2; });
        }