C#System.Collections.Generic.List`1
所以我在septemeber开始了一个Web开发课程,我们将用C#编程。 所以我开始学习它,所以我有一些经验。 现在我有大约2年的HTML,CSS和PHP经验,所以我马上选择了C#。
我正在上课,我通过做而不是阅读来学习。 我决定制作一个小型的基于控制台的RPG来学习课程。 我有一个基本的游戏,但我有一个问题。 我正试图在另一个类中显示Player类的玩家库存。
我正在使用List来保存玩家库存。
public List inventory = new List();
这是在Players类文件中。
然后在商店类,我正在做;
Player player = new Player();
创建一个新对象来访问播放器类。 然后在店里给List添加一些东西,我正在做;
player.inventory.Add("Axe");
但是如果我制作了player.inventory();
在控制台打印出来,我收到一个错误 – System.Collections.Generic.List`1 [System.String]。
有人可以帮我吗? 我需要提供更多代码吗?
这不是错误,它只是打印出列表。 List的默认ToString()
实现只是打印该类型的名称。
我猜你想让它像在PHP中那样工作,在那里打印用逗号分隔的数组? 尝试:
string.Join(", ", player.inventory);
您正在尝试打印列表对象而不是列表中包含的值,您需要以下内容: –
foreach(var i in player.Inventory) { Console.WriteLine(i); }
编辑*根据评论
Console.Write(string.Join(System.Environment.NewLine, player.Inventory));
如果要一次打印所有项目,请将下一个字符串打印到控制台:
string items = string.Join(Environment.NewLine, player.inventory); Console.WriteLine(items);
这将在单独的行中打印每个项目
默认情况下, ToString()
(在将其传递给Console.WriteLine
时在列表上调用)将打印列表的类型 ,而不是内容本身。 这就是你收到System.Collections.Generic.List`1 [System.String]的原因。 在控制台屏幕上。
您需要foreach
循环来迭代列表中的每个成员。 您不能只打印整个列表。
你需要这样的东西:
foreach(var i in Player.Inventory) { Console.WriteLine(i); }
如果您想输入所有库存物品,流动的代码应该有效:
foreach (string inventoryItem in player.inventory) { Console.WriteLine(inventoryItem); }
player.inventory是一个集合对象,无法直接输入。