让arraylist里面的每个元素都是长度为3的string[],可是运行时候,提示索引超出范围,没找到为什么
        public string process(string text)
        {
            ArrayList list = new ArrayList();
            char[] c = text.ToCharArray();  
            for (int i = 0; i < c.Length;i++ )
            {
                list[i] = new string[3];
                ((string[])list[i])[0]=c[i].ToString();
            }
在这里提示索引超出范围list[i] = new string[3];
另外,最后一行((string[])list[i])[0]=c[i].ToString();如果换成
((string[])list[i])[0]=(string)c[i];
会提示无法转换成功,为深么呢?

解决方案 »

  1.   

    list[i] = new string[3];
    =>
    list.Add(new string[3]);
      

  2.   

    list[i] = new string[3];
    报错是因为ArrayList list = new ArrayList();只是创建了一个空的集合,里面0个元素。
    (string)c[i];
    报错是因为c[i]是一个char,char是值类型,string是引用类型。
    前面家加(类型),这种方式要么在值类型中进行,要么在引用类型中进行,不能混合使用。
      

  3.   

    恩,解决了我的问题,确实对可变长度的arraylist初始长度为0,那么用索引arraylist[0]因为不存在,会提示索引超出范围!第二个,原来要在各自范围内才能强制转换,谢谢!