如何将二维数组添加到 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[,]>()
来初始化列表
我想制作一个二维(布尔)数组列表。我已经声明了空列表 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[,]>()
来初始化列表