日期:2014-05-17  浏览次数:20472 次

Arraylist中存放Arraylist可行吗?怎么引用?
        DataTable table = new DataTable();
        table = ds.Tables[0];
        for (int i = 0; i < table.Rows.Count; i++)
        {
            ArrayList polyline = new ArrayList();
            for (int k = 0; k < table.Columns.Count; k++)
            {
                DataRow row = table.Rows[i];
                if (table.Columns[k].ColumnName.Contains("point"))
                {
                    polyline.Add(table.Rows[i][k].ToString());
                }
            }
            point3.Add(polyline);
            polyline.Clear();
        }

代码如上,问题就是标题描述的,point3本身就是一个Arraylist,而polyline也是一个Arraylist,然后我就不知道该怎么引用了,((Arraylist)point3[0])[0]会提示错误,但是上面的代码不报错,不知道这样到底行不行?
还有第二个问题,point3是全局变量,如果我上面的代码可行,我能不能在其他函数中使用point3中的polyline呢?

------解决方案--------------------
point3.Add(polyline);
polyline.Clear();

以上代码有问题:
point3的polyline和外面的polyline是同一个,都被你清空了。

试一下:
point3[0][0]

------解决方案--------------------
ArrayList本身也是Object,当然可以了

你这个报错是你自己代码造成的问题

polyline.Clear();

你都clear了。。。怎么还能找到数据呢

你实际每次循环的最终结果就是在point3添加一个空的ArrayList