【问题标题】:How do I pass an object from one class into a list of another class?如何将一个类中的对象传递到另一个类的列表中?
【发布时间】:2019-04-24 16:41:05
【问题描述】:

我正在尝试将名为“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);
        }
    }

【问题讨论】:

  • 你遇到了什么问题?
  • 这段代码没有编译有几个原因,你遇到了什么错误?
  • 它告诉我,我无法将 itemRock 从类 Item 传递到列表 plyItems。添加到类 Inventory。我要做的只是使用列表制作一些模拟库存系统,其中在类 Items 我列出将传递给库存类的项目。
  • 你调试过你的代码吗,这发生在哪一行?现在这些都不会编译...
  • 无法解析“Inventory 类中的 itemRock”。

标签: c# list class


【解决方案1】:

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

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

根据我的经验,这通常是比较例外的答案。

【讨论】:

  • 更好的是,如果您需要存储的不仅仅是 item.Name(我猜您是根据变量名判断的),您可以将列表转换为 Item 的列表即List&lt;Item&gt; plyItems = new List&lt;Item&gt;();
  • 还有其他几种方法可以做到这一点。这些只是最常见的两种。
猜你喜欢
  • 2016-09-06
  • 1970-01-01
  • 2017-03-04
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
相关资源
最近更新 更多