Es gibt keine Umwandlung zwischen einem quadratischen Array und einem gezackten Array. Sie werden board
in einem gezackten Array zu rekonstruieren:
public static T[][] SquareArrayToJAggedArray<T>(T[,] square)
{
T[][] jagged = new T[square.GetLength(0)][];
for (int i = 0; i < jagged.Length; i++)
{
jagged[i] = new T[square.GetLength(1)];
for (int j = 0; j < jagged[i].Length; j++)
{
jagged[i][j] = square[i, j];
}
}
return jagged;
}
Und es nennen wie so:
private int[][] initStaticBoard()
{
int[,] board = new int[,] {
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
int[][] result = SquareArrayToJaggedArray(board);
return result;
}
Anstatt sich Gedanken über die Umwandlung, würde ich jedoch empfehlen nur, dass man den einen oder wählen andere und bleibe dabei. Das Konvertieren zwischen den beiden beinhaltet das Zuweisen von neuem Speicher für das neue Array, der sich ziemlich schnell addieren kann, wenn Sie mit großen Arrays arbeiten oder zu häufig konvertieren. Aufgrund der Rekonstruktion wirken sich Änderungen am neuen Array nicht auf das alte Array aus und umgekehrt.
Wenn die Daten, die Sie darstellen, eine Struktur mit fester Breite und Länge sind, verwenden Sie ein quadratisches Array. Wenn verschiedene Unterfelder unterschiedliche Längen haben, verwenden Sie ein gezacktes Array.