Возникают проблемы с добавлением элементов в список (класса) в VB.Net - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу создать список предметов в каждой комнате текстовой приключенческой игры, но я хочу, чтобы у каждого предмета было и название предмета, и описание предмета, поэтому я могу вызвать любую / обе строки дляэлемент в зависимости от того, для чего мне нужен элемент.

    Dim StartRoom As RoomInfo
    Public Class Items
        Public ItemName As String
        Public ItemDescription As String
    End Class
    Public Structure RoomInfo
        Dim RoomName As String
        Dim BasicDescription As String
        Dim RoomDescription As String
        Dim ValidExists As List(Of String)
        Dim ObjectsInRoom As List(Of String)

        Dim ItemsInRoom As List(Of Items)

    End Structure

    Sub InitializeRooms()

        StartRoom.RoomName = "Start Room"
        StartRoom.RoomDescription = "Test Description"
        StartRoom.BasicDescription = "Test Basic Description"
        Dim TestItem As New Items With {
            .ItemName = "Test Item",
            .ItemDescription = "This is a Test Item"
        }
        StartRoom.ItemsInRoom.Add(TestItem)


    End Sub

Я создал список ItemsInRoom, который представляет собой список Предметов, Класс. Таким образом, каждая комната может иметь уникальный список предметов, которые могут быть изменены, когда игрок поднимает или взаимодействует с ними. Это то, для чего предназначен подпрограмма Initialize Rooms - я могу запустить ее при загрузке игры и настроить всю информацию для каждой комнаты в игре. В любом случае, когда я пытаюсь добавить TestItem в список, я получаю «Ссылку на объект, не установленную для экземпляра объекта». ошибка. Я очень тупой, и это, вероятно, самая очевидная ошибка в книге, но я не могу найти решение для этого конкретного случая. Спасибо за помощь.

1 Ответ

1 голос
/ 06 ноября 2019

Вот как должны выглядеть ваши объявления типов:

Public Class Item
    Public Property Name As String
    Public Property Description As String
End Class

Public Class Room
    Public Property Name As String
    Public Property BasicDescription As String
    Public Property RoomDescription As String
    Public ReadOnly Property ValidExists As New List(Of String)
    Public ReadOnly Property Objects As New List(Of String)
    Public ReadOnly Property Items As New List(Of Item)
End Class

Лучшие имена для типов и членов, класс, а не структура, свойства, а не поля, коллекции, созданные там, где они объявлены, свойства коллекциитолько для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...