我有这段代码:
private readonly string[,] sSOMETHING = new string[,]
{
{"ONE", "TWO", "THREE"},
{"FOUR", "FIVE", "SIX"}
};
...
foreach (string[] sELSE in sSOMETHING)
{
...
}
我在foreach中遇到一个错误,即当sSOMETHING是一个数组时,它无法将字符串转换为字符串[]。为什么它不将字符串数组识别为数组? foreach是否存在多维数组的问题?
答案 0 :(得分:8)
您正在创建2D数组,而不是数组的锯齿状数组。将声明更改为以下内容:
private readonly string[][] sSOMETHING = new string[][]
{
new []{"ONE", "TWO", "THREE"},
new []{"FOUR", "FIVE", "SIX"}
};
答案 1 :(得分:2)
编译器正在抱怨。要使用foreach
语法,您需要将其转换为数组数组(string[][]
),或者通过获取其维度来使用for
循环访问它:
使用以下语法访问多维数组中的所有元素,就像它被展平一样
foreach (string sELSE in sSOMETHING) {
Console.Write(sELSE);
}
或使用类似
的内容for (int i = 0; i < sSOMETHING.GetLength(0); ++i) {
for (int j = 0; j < sSOMETHING.GetLength(1); ++j) {
Console.Write(sSOMETHING[i, j]);
}
}