0

我有这个代码:

private readonly string[,] sSOMETHING = new string[,]
{
    {"ONE", "TWO", "THREE"},
    {"FOUR", "FIVE", "SIX"}
};

...

foreach (string[] sELSE in sSOMETHING)
{
    ...
}

当很明显 sSOMETHING 是一个数组时,我在 foreach 中收到一个错误,它无法将字符串转换为字符串 []。为什么它不将字符串数组识别为数组?foreach 多维数组有问题吗?

4

2 回答 2

8

您正在创建二维数组,而不是数组的锯齿状数组。将声明更改为以下内容:

private readonly string[][] sSOMETHING = new string[][]
{
    new []{"ONE", "TWO", "THREE"},
    new []{"FOUR", "FIVE", "SIX"}
};
于 2013-04-10T10:49:27.373 回答
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]);
    }
}
于 2013-04-10T10:53:38.780 回答