我有以下数组:
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'
你能告诉我如何解决这个问题吗?
答案 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
}