2016-10-12 1 views
0

Я хочу составить список 2D (булевых) массивов. Я объявил пустой список блок сам и сделал пустой 2D булевой массив под названием blockStructure. Также я сделал способ блоки, где я даю blockStructure другое значение, а затем добавьте его к блоку .Как добавить 2D-массивы в список на C#?

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

ошибка, что я сказал, что список блок имеет нулевое значение. По какой-то причине 2D-массивы не добавляются в список. Кто-нибудь знает решение?

+0

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http: //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