如何在c#中创建多维对象数组

Fre*_*Box 3 object multidimensional-array xna-4.0 c#-4.0

我正在尝试制作一个脚本,通过制作高度贴图然后从那里填充地形块来动态生成世界块.我的问题是创建一个二维对象数组.

public class Chunk
{
    public Block[,] blocks;

    Generate(){
        //code that makes a height map as a 2 dimensional array as hightmap[x,y]=z
        //convert heightmap to blocks
        for (int hmX = 0; hmX < size; hmX++)
        {
            for (int hmY = 0; hmY < size; hmY++)
            {
                blocks[hmX, hmY] = new Block(hmX, hmY, heightmap.Heights[hmX, hmY], 1);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

NullReferenceException未处理,Object引用未设置为对象的实例.

Nat*_*nax 5

你只需要在循环之前添加new:

Block[,] blocks = new Block[size,size];
Run Code Online (Sandbox Code Playgroud)

或者更确切地说,在generate函数内(所有其他相同):

blocks = new Block[size,size];
Run Code Online (Sandbox Code Playgroud)

否则你将隐藏原始的'blocks'变量.