让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];
会提示无法转换成功,为深么呢?
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.Add(new string[3]);
报错是因为ArrayList list = new ArrayList();只是创建了一个空的集合,里面0个元素。
(string)c[i];
报错是因为c[i]是一个char,char是值类型,string是引用类型。
前面家加(类型),这种方式要么在值类型中进行,要么在引用类型中进行,不能混合使用。