Сейчас я пытаюсь сделать монополию как небольшой проект. Я пытаюсь создать массив плиток, однако, когда я запускаю код, я получаю исключение nullreferenceException, потому что Tile [] Tiles отображается как null. Будем признательны любому совету.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Monolopy
{
class Board
{
public Tile[] Tiles { get; }
GoTile tile1;
BuildingTile tile2;
JailTile tile3;
BuildingTile tile4;
BuildingTile tile5;
BuildingTile tile6;
GoToJailTile tile7;
BuildingTile tile8;
BuildingTile tile9;
ChanceTile tile10;
BuildingTile tile11;
BuildingTile tile12;
public Board()
{
Tile[] Tiles = {
tile1 = new GoTile(),
tile2 = new BuildingTile(2, "Old Kent Road", 20, 200),
tile3 = new JailTile(),
tile4 = new BuildingTile(4, "WhiteHall", 40, 400),
tile5 = new BuildingTile(5, "Euston Road", 50, 500),
tile6 = new BuildingTile(6, "bow Street", 60, 600),
tile7 = new GoToJailTile(),
tile8 = new BuildingTile(8, "Strand", 70, 700),
tile9 = new BuildingTile(9, "Fleet Street", 80, 800),
tile10 = new ChanceTile(),
tile11 = new BuildingTile(11, "Park Lane", 90, 900),
tile12 = new BuildingTile(12, "Mayfair", 100, 1000)
};
}
}
}
Вы определяете второй Tiles, который живет только на время работы конструктора Board. Удалите Tile[] из конструктора платы, чтобы вместо этого использовать свойство плитки.





Вы повторно объявляете Tiles в своем конструкторе, поэтому свойство экземпляра никогда не устанавливается. Просто опустите тип Tile [] в своем конструкторе.
Кроме того, добавьте к свойству (частный) сеттер.
Массив плитки в конструкторе представляет собой переменную местный в конструкторе, поэтому любой код, использующий свойство Плитки класса Доска, получит значение NULL. Член Плитки фактически никогда не инициализируется.
Попробуйте присвоить свойству значение локальной переменной.
Удалите
Tile[]перед плитками в своем конструкторе, когда вы заполняете свою локальную переменную