我试图将名为“ 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);
}
}
答案 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());
根据我的经验,这通常是例外情况。