如何将二维数组添加到 C# 中的列表?

How to add 2D arrays to a list in C#?

我想制作一个二维(布尔)数组列表。我已经声明了空列表 block 本身,并制作了一个名为 blockStructure 的空二维布尔数组。我还制作了一个方法 blocks ,我给 blockStructure 一个不同的值,然后将它添加到 block 列表。

class TetrisBlock 
{
    public List<bool[,]> block;
    public bool[,] blockStructure;
}

public Tetrisblock(Texture2D sprite)
{
    blockTexture = sprite;
    blockStructure = new bool[2, 2];
}

List<bool[,]> blocks()
{
    blockStructure = new bool[,] // first 2D array 
    {
        { false, true},
        { false, false}
    };
    block.Add(blockStructure);

    blockStructure = new bool[,] // second 2D array
    {
        { true, true},
        { false, false}
    };
    block.Add(blockStructure);

    return block;
}

public void draw (GameTime gameTime, SpriteBatch spriteBatch)
{
    for (int x = 0; x < 2; x++)
    {
        for (int y = 0; y < 2; y++)
        {
            if (blok[1][x,y])
            {
                spriteBatch.Draw(sprite, new Vector2(blockTexture.Width*x, blockTexture.Height*y, Color.White)
            }
        }
    }
}

我得到的错误是列表 block 的值为 null。由于某种原因,二维数组没有添加到列表中。有人知道解决方案吗?

您从未给 block 一个值:

block = new List<bool[,]>();

默认情况下,任何引用类型都是 null,直到您将其实例化为某物。

您必须先初始化 List<bool[,]> block 列表,然后才能向其中添加项目。这一行只是定义了一个引用,它最初什么都不引用,null,但是你必须有一个 block = new List<bool[,]>() 来初始化列表