为什么我得到System. collections . generic . list ' 1[System. colle
本文关键字:System colle generic collections 为什么 list | 更新日期: 2023-09-27 18:10:06
我决定制作一个小型的基于主机的RPG来学习课程。我有一个基本的游戏,但我有一个问题。我试图在另一个类中显示Player类中的玩家库存。
我正在使用列表来保存玩家的库存。
public List<string> inventory = new List<string>();
这是在播放器类文件。
然后在Shop类中,我在做;
Player player = new Player();
创建一个新对象来访问播放器类。然后在商店的List中添加一些东西,我在做;
player.inventory.Add("Axe");
但是如果我在控制台中打印出player.inventory();
,我会得到错误的结果:
System.Collections.Generic.List`1[System.String]
我该如何解决这个问题?我应该换成Axe
这不是错误,它只是打印出列表。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
时在list上调用)将打印列表的类型,而不是内容本身。这就是为什么你会收到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);
}
的球员。库存是一个集合对象,不能直接输入。