C#System.Collections.Generic.List`1 [System.String]

Jon*_*Jon 6 c# visual-studio-2010

所以我在septemeber开始了一个Web开发课程,我们将用C#编程.所以我开始学习它,所以我有一些经验.现在我有大约2年的HTML,CSS和PHP经验,所以我马上选择了C#.

我正在上课,我通过做而不是阅读来学习.我决定制作一个小型的基于控制台的RPG来学习课程.我有一个基本的游戏,但我有一个问题.我正试图在另一个类中显示Player类中的玩家库存.

我正在使用List来保存玩家库存.

public List<string> inventory = new List<string>();
Run Code Online (Sandbox Code Playgroud)

这是在Players类文件中.

然后在商店类,我正在做;

Player player = new Player();
Run Code Online (Sandbox Code Playgroud)

创建一个新对象来访问播放器类.然后在店里给List添加一些东西,我正在做;

player.inventory.Add("Axe");
Run Code Online (Sandbox Code Playgroud)

但是如果我player.inventory();在控制台中打印出来,我会收到一个错误 - System.Collections.Generic.List`1 [System.String].

有人可以帮我吗?我需要提供更多代码吗?

Art*_*ess 8

这不是错误,只是打印出列表。ToString()List的默认实现只是打印类型的名称。

我猜您希望它像在 PHP 中一样工作,在其中打印以逗号分隔的数组?尝试:

string.Join(", ", player.inventory);
Run Code Online (Sandbox Code Playgroud)


DGi*_*bbs 7

您正在尝试打印列表对象而不是列表中包含的值,您需要类似的内容:-

foreach(var i in player.Inventory)
{
     Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)

编辑* 根据评论

Console.Write(string.Join(System.Environment.NewLine, player.Inventory));
Run Code Online (Sandbox Code Playgroud)


Gop*_*rma 4

您需要一个foreach循环来迭代列表中的每个成员。您不能只打印整个列表。

你需要类似的东西:

foreach(var i in Player.Inventory)
{
    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)