如何访问数组的第二个维度

时间:2014-01-09 11:02:31

标签: c# arrays

以下情况: 我有一个有二维的数组。不,我想访问第二个维度。我怎样才能实现这一目标?

这是我的代码,以澄清我的问题:

private static int[,] _Spielfeld = new int[_Hoehe, _Breite];

    private static bool IstGewonnen(int spieler)
    {
        bool istGewonnen = false;

        for (int zaehler = 0; zaehler < _Spielfeld.GetLength(0); zaehler++)
        {
            //Here i cant understand why compiler doesnt allow
            //Want to give the second dimension on the Method
            istGewonnen = ZeileSpalteAufGewinnPruefen(_Spielfeld[zaehler] ,spieler);
        }

        return istGewonnen;
    }

//This method want to become an Array
private static bool ZeileSpalteAufGewinnPruefen(int[] zeileSpalte, int spieler)
{ 
  //Some further code
}

编译器说:“int [,]类型的参数不能赋予int []类型的参数。在Java中,它正如我预期的那样工作。提前感谢。

2 个答案:

答案 0 :(得分:2)

将数组定义为锯齿状数组(数组数组):

private static int[][] _Spielfeld = new int[10][];

然后遍历第一个维度并初始化。

for (int i = 0; i < _Spielfeld.Length; i++)
{
    _Spielfeld[i] = new int[20];
}

然后你的其余代码将编译好。

答案 1 :(得分:2)

C#允许两个不同的商品two flavors of multidimensional arrays虽然它们看起来很相似,但在实践中处理方式却完全不同。

你所拥有的是真正的multidimensional array,你无法从中自动提取切片。如果你有一个jagged array,那将是可能的(如在Java中)。

如果选择具有多维数组是故意的和强制性的,那么您将不得不手动提取切片;例如,请参阅this question

如果选择锯齿状和多维之间的选择,那么您也可以考虑切换到锯齿状数组并获得免费切片选项。