[]内的索引数量错误;预计'1'

时间:2013-10-15 06:13:38

标签: c# arrays

我有以下数组:

string[] list1 = new string[2] { "01233", "THisis text" };
string[] list2 = new string[2] { "01233", "THisis text" };
string[] list3 = new string[2] { "01233", "THisis text" };
string[] list4 = new string[2] { "01233", "THisis text" };

string[][] lists = new string[][] { list1, list2, list3, list4 };

我正在尝试使用以下代码查看数组值:

for (int i = 0; i < lists.GetLength(0); i++)
{
     for (int j = 0; j < lists.GetLength(1); j++)
     {
        string s = lists[i, j]; // the problem is here
        Console.WriteLine(s);
     }
}
Console.ReadLine();

问题是lists[i, j];带下划线并导致出现此错误消息:Wrong number of indices inside []; expected '1'

你能告诉我如何解决这个问题吗?

4 个答案:

答案 0 :(得分:6)

lists不是2D数组。它是一个数组数组。因此语法为lists[i][j]

for (int i = 0; i < lists.Length; i++)
{
     for (int j = 0; j < lists[i].Length; j++)
     {
        string s = lists[i][j]; // so
        Console.WriteLine(s);
     }
}
Console.ReadLine();

注意如何检查数组数组Length。但是,正如其他人所说,为什么不使用foreach?对于数组数组,您需要两个嵌套的foreach循环。


另一个选择是实际使用2D数组,string[,]。声明如下:

string[,] lists = { { "01233", "THisis text" },
                    { "01233", "THisis text" },
                    { "01233", "THisis text" },
                    { "01233", "THisis text" }, };

然后,您可以使用两个for循环,使用lists[i,j]语法,或一个foreach

答案 1 :(得分:2)

因为你有列表而不是2D数组。要从数据结构中获取元素,您必须使用它:

lists[i][j]

,您的完整代码将是:

for (int i = 0; i < lists.Length; i++)
{
     for (int j = 0; j < lists[i].Length; j++)
     {
        string s = lists[i][j];
        Console.WriteLine(s);
     }
}
Console.ReadLine();

但实际上,在您的情况下,最好使用foreach

foreach (var l in lists)
{
     foreach (var s in l)
     {
        Console.WriteLine(s);
     }
}
Console.ReadLine();

答案 2 :(得分:0)

尝试使用此

for (int i = 0; i < lists.Length; i++)
{
    for (int j = 0; j < lists[i].Length; j++)
    {
        string s = lists[i][j];
        Console.WriteLine(s);
    }
}
Console.ReadLine();

答案 3 :(得分:0)

使用foreach代替

foreach(var array in lists )
    foreach(var item in array)
    {
    //item
    }