Когда я создаю массив, он отображается как null

Сейчас я пытаюсь сделать монополию как небольшой проект. Я пытаюсь создать массив плиток, однако, когда я запускаю код, я получаю исключение 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)
        };
    }
}

}

Удалите Tile[] перед плитками в своем конструкторе, когда вы заполняете свою локальную переменную

Markiian Benovskyi 28.04.2018 14:33

Вы определяете второй Tiles, который живет только на время работы конструктора Board. Удалите Tile[] из конструктора платы, чтобы вместо этого использовать свойство плитки.

ZiggZagg 28.04.2018 14:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
53
2

Ответы 2

Вы повторно объявляете Tiles в своем конструкторе, поэтому свойство экземпляра никогда не устанавливается. Просто опустите тип Tile [] в своем конструкторе.

Кроме того, добавьте к свойству (частный) сеттер.

Массив плитки в конструкторе представляет собой переменную местный в конструкторе, поэтому любой код, использующий свойство Плитки класса Доска, получит значение NULL. Член Плитки фактически никогда не инициализируется.

Попробуйте присвоить свойству значение локальной переменной.

Другие вопросы по теме