Как передать объект из одного класса в список другого класса? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь передать объект класса Item с именем "itemRock" в список класса Inventory с именем "plyItems".


    public class Item
    {
        public Item()
        {
            Item itemRock = new Item();
            itemRock.Name = "Rock";
            itemRock.Description = "It's a rock.";

        }
    }

    public class Inventory
    {
        public Inventory()
        {
            List<string> plyItems = new List<string>();
            plyItems.Add(itemRock.Name);
        }
    }

1 Ответ

0 голосов
/ 24 апреля 2019

У вас есть несколько вопросов здесь. Во-первых, ваш код должен выглядеть примерно так:

public class Item
{
    string Name = "Rock";
    string Description = "It's a rock.";
}

public class Inventory
{
    List<string> plyItems = new List<string>();
}

Таким образом, у вас есть личные переменные в вашем классе. По-твоему, в твоих конструкторах классов будет локальная переменная, которая перестанет существовать после того, как конструкторы пройдут свой курс.

Теперь, если вы хотите добавить Item.Name к plyItems, у вас есть несколько вариантов.

Вариант 1: Вы можете сделать все публично:

public class Item
{
    public string Name = "Rock";
    public string Description = "It's a rock.";
}

public class Inventory
{
    public List<string> plyItems = new List<string>();
}

и затем после того, как вы создали экземпляр Item и экземпляр Inventory где-то в коде:

Item item = new Item();
Inventory inventory = new Inventory();

Вы можете просто добавить его в список:

inventory.plyItems.Add(item.Name);

Вариант 2: Сделать пару функций:

public class Item
{
    string Name = "Rock";
    string Description = "It's a rock.";
    public string GetName() 
    { 
        return name; 
    }
}

public class Inventory
{
    List<string> plyItems = new List<string>();
    public void AddName(string _name)
    {
        plyItems.Add(_name);
    }
}

Затем, используя те же экземпляры, что и в варианте 1, позвоните:

inventory.AddName(item.GetName());

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

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