使用Foreach迭代2d数组:无法将字符串转换为字符串[]
问题描述:
我试图迭代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] + "&";
}
答
C#有两个相似的构造,数组和数组的多维数组。你在这里什么是一个2维数组,所以你想要的循环是
foreach (string param in a)
{
...
}
如果你想要去的阵列方式排列,你会想:
string[][] a = {new[] {"a","1"}, new[] {"b","2"}}
您的声明。
在内部,C#将多维数组作为正常数组的大小等于维的乘积(例如,因为您的a
是2×2,它将是一个长度为4的线性数组)。这样,程序员可以使用更方便的语法来访问和初始化成员。
答
字符串的二维数组与字符串数组的数组不同。
答
你必须写这样的代码:
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个回路)。
字典不会更好吗? – 2012-02-24 00:31:06