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