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]因为不存在,会提示索引超出范围!
第二个,原来要在各自范围内才能强制转换,谢谢!