如何将int [,]转换为int [] []
当我尝试时,发生以下错误。
无法隐式将类型" int[*,*]
转换为int[][]
"
我的目标是首先创建一个Jagged数组,然后将其转换为二维数组。
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 = board;
return result*emphasized text*;
}
答案 0 :(得分:4)
正方形数组和锯齿状数组之间没有强制转换。您必须将board
重建为锯齿状数组:
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;
}
并称之为:
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;
}
但是,我不会担心转换,而是建议您选择其中一个并坚持下去。在两者之间进行转换涉及为新数组分配新内存,如果您处理大型数组或转换过于频繁,则可以加快速度。此外,由于重建,对新阵列的更改不会影响旧阵列,反之亦然。
如果您所表示的数据是具有固定宽度和长度的结构,则使用方阵。如果不同的子阵列具有不同的长度,请使用锯齿状阵列。
答案 1 :(得分:0)
Jagged数组可以像这样初始化:
let alert = UIAlertController(title: "Reminder", message: "Your reminder text", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Sure!", style: UIAlertActionStyle.default) {
(finished) in
self.didReceiveRemoteNotificationAction()
})
self.present(alert, animated: true, completion: nil)