读书人

arraylist里面每个元素都是string[]的

发布时间: 2012-12-27 10:17:10 作者: rapoo

arraylist里面每个元素都是string[]的小问题
让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];

会提示无法转换成功,为深么呢?
[最优解释]
list[i] = new string[3];
报错是因为ArrayList list = new ArrayList();只是创建了一个空的集合,里面0个元素。


(string)c[i];
报错是因为c[i]是一个char,char是值类型,string是引用类型。
前面家加(类型),这种方式要么在值类型中进行,要么在引用类型中进行,不能混合使用。
[其他解释]
list[i] = new string[3];
=>
list.Add(new string[3]);
[其他解释]
恩,解决了我的问题,确实对可变长度的arraylist初始长度为0,那么用索引arraylist[0]因为不存在,会提示索引超出范围!

第二个,原来要在各自范围内才能强制转换,谢谢!

读书人网 >C#

热点推荐