我想一些帮助创建以下convertions:交错数组<->多维数组转换在ASP.NET
一个需要一个800 * 600多维数组转换成锯齿状数组,然后以相反的相同的方法(锯齿阵列与原始多维阵列相同的数据)
这可能吗?和任何帮助吗?
我想一些帮助创建以下convertions:交错数组<->多维数组转换在ASP.NET
一个需要一个800 * 600多维数组转换成锯齿状数组,然后以相反的相同的方法(锯齿阵列与原始多维阵列相同的数据)
这可能吗?和任何帮助吗?
我已经写了2种方法,其达到预期的效果
/// <summary>
/// Converts the contents of a multidimensional array into a Jagged Array
/// </summary>
/// <param name="multiArray">the existing multidimensional array you wish to convert</param>
/// <param name="numOfColumns">number of columns</param>
/// <param name="numOfRows">number of rows</param>
/// <returns>Jagged Array representation of multidimensional array passed</returns>
private int[][] convertToJaggedArray(int [,] multiArray, int numOfColumns, int numOfRows)
{
int[][] jaggedArray = new int[numOfColumns][];
for (int c = 0; c < numOfColumns; c++)
{
jaggedArray[c] = new int[numOfRows];
for (int r = 0; r < numOfRows; r++)
{
jaggedArray[c][r] = multiArray[c, r];
}
}
return jaggedArray;
}
/// <summary>
/// Converts the contents of a Jagged Array into a multidimensional array
/// </summary>
/// <param name="jaggedArray">The Jagged Array you wish to convert into a Multidimensional Array</param>
/// <param name="numOfColumns">number of columns</param>
/// <param name="numOfRows">number of rows</param>
/// <returns>Multidimensional Array representation of Jagged Array passed</returns>
private int[,] convertTo2DArray(int[][] jaggedArray, int numOfColumns, int numOfRows)
{
int[,] temp2DArray = new int[numOfColumns, numOfRows];
for (int c = 0; c < numOfColumns; c++)
{
for (int r = 0; r < numOfRows; r++)
{
temp2DArray[c, r] = jaggedArray[c][r];
}
}
return temp2DArray;
}
那么你只需通过现有的多维或锯齿状排列,它会在不同的阵列式返回相同的内容。例如
//1. convert to Jagged print out, grid 1 is the existing 2d array instance here
int[][] jaggedGrid = convertToJaggedArray(grid1, numOfCols, numOfRows);
//2. Take the jagged and re-convert to multi array
int[,] temp = convertTo2DArray(jaggedGrid, numOfCols, numOfRows);
您还可以查看和打印出来的无论是使用下面的循环
// Print out all elements in the jagged array to debugger.
for (int c = 0; c < jaggedGrid.Length; c++)
{
int[] innerArray = jaggedGrid[c];
for (int r = 0; r < innerArray.Length; r++)
{
System.Diagnostics.Debug.WriteLine("In Jagged Array\nElement No ({0},{1})={2}", c, r, jaggedGrid[c][r] + "\n");
}
}
//print out all values in temp value 2d array to debugger
for (int c = 0; c < temp.GetLength(0); c++)
{
for (int r = 0; r < temp.GetLength(1); r++)
{
System.Diagnostics.Debug.WriteLine("In temp array\nElement No ({0},{1})={2}", c, r, temp[c, r] + "\n");
}
}
我做了一些变化,从多阵列索引1开始,而交错数组从index开始内容0
static object[][] convertToJaggedArray(object[,] multiArray, int firstElement, int secondElement)
{
object[][] jaggedArray = new object[firstElement][];
for (int c = 0; c < firstElement; c++)
{
jaggedArray[c] = new object[secondElement];
for (int r = 0; r < secondElement; r++)
{
jaggedArray[c][r] = multiArray[c+1, r+1];
}
}
return jaggedArray;
}
我意识到问题有点旧,但为了灵活性,我修改了一下方法来计算方法内的数组大小,而不是必须通过它们:
static object[][] convertToJaggedArray(object[,] multiArray)
{
int firstElement = multiArray.GetLength(0);
int secondElement = multiArray.GetLength(1);
object[][] jaggedArray = new object[firstElement][];
for (int c = 0; c < firstElement; c++)
{
jaggedArray[c] = new object[secondElement];
for (int r = 0; r < secondElement; r++)
{
jaggedArray[c][r] = multiArray[c, r];
}
}
return jaggedArray;
}
从什么时候多阵列索引1为基础?示例[这里](http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx)从0开始。 – drzaus 2014-05-22 15:48:16