以下情况: 我有一个有二维的数组。不,我想访问第二个维度。我怎样才能实现这一目标?
这是我的代码,以澄清我的问题:
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中,它正如我预期的那样工作。提前感谢。
答案 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。
如果选择锯齿状和多维之间的选择,那么您也可以考虑切换到锯齿状数组并获得免费切片选项。