使用Foreach迭代2d数组:无法将字符串转换为字符串[]

时间:2012-02-24 00:30:04

标签: c# multidimensional-array

我正在尝试迭代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] + "&";
}

4 个答案:

答案 0 :(得分:1)

字符串的二维数组与字符串数组的数组不同。

答案 1 :(得分:1)

尽管初始化,但是2-D数组字符串[,]与字符串[] [](如C / C ++)不同。

http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

答案 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个循环)。