一段问题代码如下:
al应该是:
C0,D0;
C1,D1;
C2,D2;
C3,D3;
的,现在却变成
C3,D3;
C3,D3;
C3,D3;
C3,D3;
代码如下:ArrayList TestList()
{
  ArrayList al=new ArrayList();
  string[] col=new string[2];
  for(int i=0;i<4;i++)
  {
    col[0]="C"+i.ToString();
    col[1]="D"+i.ToString();    
    al.Add(col);
  }
  return al;
}
附图:

解决方案 »

  1.   

                ArrayList al = new ArrayList();
                string[] col;
                for (int i = 0; i < 4; i++)
                {
                    col = new string[2];
                    col[0] = "C" + i.ToString();
                    col[1] = "D" + i.ToString();
                    al.Add(col);
                }
      

  2.   

    你本意是在ArrayList中加4个String数组,但是只new了一个,并且每次修改的也都是那一个,所以就出现了4个相同的,而且值是循环最后一次赋的值
      

  3.   

    ArrayList al=new ArrayList();
     for(int i=0;i<4;i++)
      {
        string[] col=new string[2];
        col[0]="C"+i.ToString();
        col[1]="D"+i.ToString();    
        al.Add(col);
      }
      

  4.   

    这里面是一个概念问题,string本身可以认为是ValueType,但是string[]是Array它就是引用类型了,你只声明了一个Array而在循环中不停的改它的值,所以就得到了如此的结果。
      

  5.   

    你这个字符串数组是引用类型,你可以把在循环中重新实例一下col
      

  6.   

    ArrayList al = new ArrayList();
                string[] col;
                for (int i = 0; i < 4; i++)
                {
                    col = new string[2];
                    col[0] = "C" + i.ToString();
                    col[1] = "D" + i.ToString();                al.Add(col);
                    
                }