我正在尝试迭代2d字符串数组但是我的foreach语句有一个我不明白的编译错误。
在这个简单的例子中,我做错了什么?我怎样才能完成我想做的事情?
string URL = PRODUCT_URL + "?";
string[,] a = {{"a","1"},{"b","2"}};
foreach (string[] param in a) // error cannot convert type string to string[]
{
URL += param[0] + "=" + param[1] + "&";
}
答案 0 :(得分:1)
字符串的二维数组与字符串数组的数组不同。
答案 1 :(得分:1)
尽管初始化,但是2-D数组字符串[,]与字符串[] [](如C / C ++)不同。
答案 2 :(得分:1)
C#有两个相似的结构,数组数组和多维数组。你在这里有一个二维数组,所以你想要的循环是
foreach (string param in a)
{
...
}
如果你想要数组数组方法,你需要:
string[][] a = {new[] {"a","1"}, new[] {"b","2"}}
申报。
在内部,C#将多维数组实现为普通数组,其大小等于维度的乘积(例如,因为您的a
是2x2,所以它将是长度为4的线性数组)。这样,程序员可以使用更方便的语法进行成员访问和初始化。
答案 3 :(得分:0)
您必须编写如下代码:
string URL = PRODUCT_URL + "?";
string[][] a = { new[] { "a", "1" }, new[] { "b", "2" } };
foreach (string[] param in a) // error cannot convert type string to string[]
{
URL += param[0] + "=" + param[1] + "&";
}
使用您的代码,您将迭代a,1,b,2(4个循环)。