使用Foreach迭代2d数组:无法将字符串转换为字符串[]
本文关键字:字符串 转换 迭代 Foreach 2d 数组 使用 | 更新日期: 2023-09-27 18:25:42
我正试图迭代一个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] + "&";
}
C#有两个类似的构造,数组的数组和多维数组。这里有一个二维数组,所以你想要的循环是
foreach (string param in a)
{
...
}
如果你想采用阵列方法,你会想要:
string[][] a = {new[] {"a","1"}, new[] {"b","2"}}
为您的申报
在内部,C#将多维数组实现为大小等于维度乘积的普通数组(例如,由于a
是2x2,因此它将是长度为4的线性数组)。这样,程序员可以使用更方便的语法进行成员访问和初始化。
二维字符串数组与字符串数组不同。
尽管进行了初始化,但2-D数组字符串[,]与字符串[][](类似于C/C++)不同。
http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx
你必须这样写代码:
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个循环)。