2012-02-24 69 views
0

我试图迭代2d字符串数组,但我的foreach语句有一个我不明白的编译错误。使用Foreach迭代2d数组:无法将字符串转换为字符串[]

我在做什么错在这个简单的例子&我怎么能执行我想要做的?

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] + "&"; 
} 
+2

字典不会更好吗? – 2012-02-24 00:31:06

回答

1

C#有两个相似的构造,数组和数组的多维数组。你在这里什么是一个2维数组,所以你想要的循环是

foreach (string param in a) 
{ 
... 
} 

如果你想要去的阵列方式排列,你会想:

string[][] a = {new[] {"a","1"}, new[] {"b","2"}} 

您的声明。
在内部,C#将多维数组作为正常数组的大小等于维的乘积(例如,因为您的a是2×2,它将是一个长度为4的线性数组)。这样,程序员可以使用更方便的语法来访问和初始化成员。

1

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

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] + "&"; 
} 

与您的代码你迭代一个,1,2(4个回路)。