无法将类型为“ArrayList”的对象强制转换为类型“System.String[,]”,ArrayList是二维数组public void WriteText(StreamWriter streamWriter, ref ArrayList dim2valueList)
{
            for (int i = 0; i < dim2valueList.Count;i++ )
            {
                string[,] dim2Value = (string[,])dim2valueList[i];//报错,

解决方案 »

  1.   

    ArrayList是二维数组???真的假的??
      

  2.   

    ArrayList是泛型接口IList的实现,它是一维的。刚才你问过了啊:http://topic.csdn.net/u/20110622/15/b6300921-f501-4964-869c-8ec38b6849fb.html?33661看来我是理解错你的意思了,我把多维的数组转换成1维的ArrayList。而你是要把1维的ArrayList转换成2维的string[,]。
      

  3.   


    我要是的二维的ArrayList
    按照
    int[][] arr={{11,12},{21,22}};
    ArrayList arraylist = new ArrayList();
    for(int i=0;i<arr.size();++i)
    {
      ArrayList temp= new ArrayList();
      arraylist.add(temp);
      for(int j=0;j<arr[i].size();++j)
      {
      temp.add(arr[i][j]);
      }
    }
    得到的
    但是
    将ArrayList转化为string[,]时,
    for (int i = 0; i < dim2valueList.Count;i++ )
      {
      string[,] dim2Value = (string[,])dim2valueList[i];//报错,无法将类型为“System.Collections.ArrayList”的对象强制转换为类型“System.String[,]”。
    谢谢
      

  4.   

    dim2valuelist是个ArrayList,不支持你这样向string[,]的转换。因为ArrayList本身是一维的,不提供Rank维度等信息。换个角度,假设现在有一个Arraylist包含有18个元素,你准备把它转换成string[,]那么可能的组合就包括
    string[6,3]
    string[3,6]
    string[2,9]
    string[9,2]ArrayList是没法替你做出这个判断的。它很可怜的,它没法知道你要选择上面的哪一种排列。
      

  5.   

    ArrayList是一维的不假,但是他每个维度可以存储二维数组啊
      

  6.   


    你好,你QQ多少,通过短信息发给我,我把截图给你看看,看看ArrayList存储的二维数组的方式,有人说ArrayList存储的二维数组有问题,所以无法转换为string[,]
    谢谢
      

  7.   


    你是指ArrayList的每个元素指向一个数组?这是可以的。因为ArrayList存储的元素都可以视作object。
    // 这段是准备一个ArrayList
    int[] e1 = new int[] {1,2};
    int[] e2 = new int[] {3,4};
    ArrayList arraylist = new ArrayList();
    arraylist.Add(e1); 
    arraylist.Add(e2);// 取出作为ArrayList中第二个元素的数组中的第二个元素
    int j = ((int[])(arraylist[1]))[1];
    Console.WriteLine(j);结果:
    4
      

  8.   


    那为什么不能转化为string[,]