2016-10-12 10 views
0

2D(ブール値)配列のリストを作成したいと思います。私は空のリストブロックそれ自体を宣言し、ブロック構造と呼ばれる空の2Dブール配列を作成しました。また、メソッドブロックを作成しました。ここではブロック構造に別の値を与えてからブロックリストに追加します。C#のリストに2D配列を追加するには?

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) 
      } 
     } 
    } 
} 

私が手にエラーがリストブロックがnull値を持っていることを言います。何らかの理由で2D配列がリストに追加されません。誰かが解決策を知っていますか?

+0

[NullReferenceExceptionとは何ですか? //stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

答えて

3

List<bool[,]> blockリストを項目に追加する前に、リストを初期化する必要があります。この行は、最初は何も参照していない参照を定義していますが、nullですが、リストを初期化するためにはblock = new List<bool[,]>()が必要です。

+0

ありがとうございます。これで解決しました。 – Robbebeest

+0

@Robbebeest - あなたは歓迎です:) –

2

あなたはblockに値を与えたことはない:

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

あなたが何かにそれをインスタンス化するまで、任意の参照型はデフォルトでnullです。

+0

ありがとうございました。 – Robbebeest

関連する問題