要初始化2D锯齿阵列,需要一个循环。
int[][] data = new int[rows][];
for(int i=0; i<rows; i++)
{
int[] row = new int[cols];
// assign values to row
data[i] = row;
}
现在将其扩展到三维锯齿阵列
byte[][] buffer = new byte[FIX_SECTOR_COUNT][][];
for(int i=0; i<FIX_SECTOR_COUNT; i++)
{
byte[][] sector = new int[numOfSector][];
for(int j=0; j<numOfSector; j++)
{
byte[] block = new byte[numOfBlockInSector];
// fill values for block
sector[j] = block;
}
buffer[i] = sector;
}
当然,最好创建一个函数来初始化各种维度的锯齿状数组,以便代码重用。
例如,这是我的库中用于二维锯齿阵列的代码:
/// <summary>
/// Create an empty jagged array of rowsÃcols
/// </summary>
public static T[][] CreateJaggedArray<T>(int rows, int cols)
{
var matrix=new T[rows][];
for(int i=0; i<rows; i++)
{
matrix[i]=new T[cols];
}
return matrix;
}
/// <summary>
/// Create a jagged array of rowsÃcols, and populate it with values row by row.
/// </summary>
public static T[][] CreateJaggedArray<T>(int rows, int cols, params T[] elements)
{
var matrix=new T[rows][];
for(int i=0, k=0; i<rows; i++, k+=cols)
{
var row=new T[cols];
Array.Copy(elements, k, row, 0, cols);
matrix[i]=row;
}
return matrix;
}
/// <summary>
/// Create a jagged array of rowsÃcols and populate it with a function like <c>(i,j)=> i==j ? 1 : 0</c>
/// </summary>
public static T[][] CreateJaggedArray<T>(int rows, int cols, Func<int, int, T> init)
{
var matrix=new T[rows][];
for(int i=0, k=0; i<rows; i++, k+=cols)
{
var row=new T[cols];
for(int j=0; j<cols; j++)
{
row[j]=init(i, j);
}
matrix[i]=row;
}
return matrix;
}