C# 一维数组作为多维数组的等价物?

C# 一维数组作为多维数组的等价物?,c#,arrays,C#,Arrays,我有一个数组定义如下: Tile[,] Tiles 它在X轴上包含100个元素,在Y轴上包含150个元素。虽然这在我的游戏中不同于地图,但我始终知道X轴和Y轴上的瓷砖数量 鉴于此,如何将上述数组转换为一维数组,并遍历它们?我知道一维数组比多维数组快2倍,这对我的游戏性能意义重大。此外,一维数组可以与并行计算一起使用。如果Y轴上的项目数对于每个X是固定的,您可以试试这个。 假设a=X轴上的计数,b=Y轴上的计数 您可以定义Tiles=newtile[a*b] 然后平铺[x,y]变成平铺[x*b+

我有一个数组定义如下:

Tile[,] Tiles
它在X轴上包含100个元素,在Y轴上包含150个元素。虽然这在我的游戏中不同于地图,但我始终知道X轴和Y轴上的瓷砖数量


鉴于此,如何将上述数组转换为一维数组,并遍历它们?我知道一维数组比多维数组快2倍,这对我的游戏性能意义重大。此外,一维数组可以与并行计算一起使用。

如果Y轴上的项目数对于每个X是固定的,您可以试试这个。
假设a=X轴上的计数,b=Y轴上的计数
您可以定义
Tiles=newtile[a*b]

然后
平铺[x,y]
变成
平铺[x*b+y]

如果y轴上的项目计数对于每个x都是固定的,您可以试试这个。
假设a=X轴上的计数,b=Y轴上的计数
您可以定义
Tiles=newtile[a*b]

然后
Tiles[x,y]
变成
Tiles[x*b+y]
首先你必须知道2d数组的大小,假设:-(2x3)

3是二维阵列的物理尺寸

int OneDArrayIndex = (3*xPosition)+ yPosition ;
这将给出1D数组的索引,您可以在数组中的该索引处插入值


希望这有帮助….

首先,您必须知道2d数组的大小,假设:-(2x3)

    private static int[] TwoDArrayToOneDArray( int[][] TwoDArray, int xSize, int ySize)
        {
            int xIndex = 0;
            int OneDArrayIndex = 0;
            int[] oneDArray = new int[xSize * ySize];
            for (int yIndex = 0; yIndex < ySize && xIndex < xSize; yIndex++)
            {

                OneDArrayIndex = (ySize * xIndex) + yIndex;
                oneDArray[OneDArrayIndex] = TwoDArray[xIndex][yIndex];
                if (yIndex == ySize - 1)
                {
                    yIndex = 0;
                    xIndex = xIndex++;
                }
            }
            return oneDArray;
        }
3是二维阵列的物理尺寸

int OneDArrayIndex = (3*xPosition)+ yPosition ;
这将给出1D数组的索引,您可以在数组中的该索引处插入值

希望这有帮助….

私有静态int[]TwoDArray数组(int[]TwoDArray,int-xSize,int-ySize)
    private static int[] TwoDArrayToOneDArray( int[][] TwoDArray, int xSize, int ySize)
        {
            int xIndex = 0;
            int OneDArrayIndex = 0;
            int[] oneDArray = new int[xSize * ySize];
            for (int yIndex = 0; yIndex < ySize && xIndex < xSize; yIndex++)
            {

                OneDArrayIndex = (ySize * xIndex) + yIndex;
                oneDArray[OneDArrayIndex] = TwoDArray[xIndex][yIndex];
                if (yIndex == ySize - 1)
                {
                    yIndex = 0;
                    xIndex = xIndex++;
                }
            }
            return oneDArray;
        }
{ int xIndex=0; int-OneDArrayIndex=0; int[]oneDArray=newint[xSize*ySize]; 对于(int-yIndex=0;yIndex
私有静态int[]TwoDArray ToonedArray(int[]TwoDArray,int-xSize,int-ySize)
{
int xIndex=0;
int-OneDArrayIndex=0;
int[]oneDArray=newint[xSize*ySize];
对于(int-yIndex=0;yIndex
我怀疑您的应用程序性能会因为使用二维数组而降低:)使用一维数组,只会使代码更难阅读和维护……我想知道“一维数组比多维数组快2倍”的来源。你暗示多维数组不能用于并行计算的来源。很高兴知道您是如何使用阵列来针对特定场景进行优化的。我怀疑您的应用程序性能会因为使用二维阵列而降低:)使用一维阵列,只会使您的代码更难阅读和维护……我想知道它的源代码“一维数组的速度是多维数组的2倍”。这是您暗示多维数组不能用于并行计算的来源。如果您知道如何使用数组来针对特定场景进行优化,那就太好了。