[英]cast type from jagged array (int[*,*]) to 2d array (int[][])
如何將int [ , ]轉換為int [] []
當我嘗試時,發生以下給定的錯誤。
無法將類型“ int[*,*]
隱式轉換為int[][]
”
我的目標是首先創建一個鋸齒狀數組,然后將其轉換為2d數組。
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*;
}
在方陣和鋸齒狀陣列之間沒有強制轉換。 您將必須將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;
}
不過,我不必擔心轉換,而只是建議您選擇其中一個並堅持使用。 兩者之間的轉換涉及為新數組分配新的內存,如果您要處理大型數組或轉換的頻率太高,這可能會很快加起來。 此外,由於重建,對新陣列的更改不會影響舊陣列,反之亦然。
如果要表示的數據是具有固定寬度和長度的結構,則使用正方形數組。 如果不同的子數組具有不同的長度,請使用鋸齒狀的數組。
鋸齒狀數組可以這樣初始化:
int[][] board = { new int[5], new int[5], new int[5], new int[5], new int[5] };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.