0

我有以下数组:

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

4 回答 4

7

lists不是二维数组。它是一个数组数组。因此语法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检查数组数组。但是,正如其他人所说,为什么不使用foreachforeach对于数组数组,您需要两个嵌套循环。


另一种选择是实际使用二维数组 a string[,]。声明如下:

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

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

于 2013-10-15T06:16:01.330 回答
2

因为您有列表列表而不是二维数组。要从数据结构中获取元素,您必须像这样使用它:

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();
于 2013-10-15T06:16:08.897 回答
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();
于 2013-10-15T06:16:48.367 回答
0

改用 foreach

foreach(var array in lists )
    foreach(var item in array)
    {
    //item
    }
于 2013-10-15T06:18:53.333 回答