如何将对象从一个类传递到另一个类的列表中?

时间:2019-04-24 16:41:05

标签: c# list class

我试图将名为“ itemRock”的Item类的对象传递到名为“ plyItems”的Inventory类的列表中。


    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 :(得分:0)

您在这里遇到几个问题。首先,您的代码应如下所示:

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());

根据我的经验,这通常是例外情况。