static void ChangeArray(ref string[] So)  
        {            So = (So.Reverse()).ToArray();
        }
否则你确实改变了So的引用,但是你不能改变NumString好比
int i = 1;
foo(i);
...
void foo(int x) { x = 2; }
你虽然改变了x,但是不影响i。

解决方案 »

  1.   

    这里的原因是ChangeArray和ChangArrayElements两个方法不一样。ChangeArray中只是使用了NumString的内容,所以我想让你迷惑的地方可能是So.Reverse()这个方法,这个方法其实只是使用了So的内容,而不去改变其内容。你可以去看看msdn.ChangeArrayElements则很显示是改变了数组的内容。
      

  2.   

    因为(So.Reverse()).ToArray();实际上又创建了一个新的数组,原本传进函数的So在被(So.Reverse()).ToArray()赋值后就指向了新的数组
      

  3.   

    路過,看看.So = (So.Reverse()).ToArray();