C# 试图打印列表中的值给我带来了“错误”;项目.游戏“;
因此,我创建了这个列表,似乎创建得很好:C# 试图打印列表中的值给我带来了“错误”;项目.游戏“;,c#,C#,因此,我创建了这个列表,似乎创建得很好: List<Game> JoinLists = new List<Game>(); JoinLists.Add(new Game("Elf", 6)); JoinLists.Add(new Game("Angel", 10)); JoinLists.Add(new Game("Demon", 10)); JoinLists.Add(new Game("W
List<Game> JoinLists = new List<Game>();
JoinLists.Add(new Game("Elf", 6));
JoinLists.Add(new Game("Angel", 10));
JoinLists.Add(new Game("Demon", 10));
JoinLists.Add(new Game("Wizard", 9));
JoinLists.Add(new Game("Undead", 7));
JoinLists.Add(new Game("Vampire", 9));
JoinLists.Add(new Game("Troll", 6));
有人能解释为什么打印的项目是“Project.Game”吗?我还将这些存储在Game.cs中:
private string _type;
private int _strength;
public Game(string charType, int strength)
{
this._type = charType;
this._strength = strength;
}
Console.WriteLine
调用对象的ToString()
方法,以便将对象转换为字符串。您的Game
类没有这样的方法,因此使用了它的基类实现object.ToString()
有一个默认的实现,它只是简单地吐出类的名称
如果你想让你的游戏
类在控制台上实际显示一些信息,你有两个选择
首先,在类中实现ToString()
。例如:
public override string ToString()
{
return _type;
}
其次,根据需要将各个属性写入控制台:
Console.WriteLine(character.Type);
请注意,要使第二个选项成为选项,您需要实现一些公共属性。现在您有一对私有字段
Console.WriteLine(character);
此行隐式调用character.ToString()代码>您尚未定义的。由于您没有覆盖默认实现(如上所述),因此结果只是返回完全限定的类型名(在本例中为“Project.Game”
)
如果您想要一个特定的输出,可以覆盖游戏的ToString()
方法,创建一个专用于可打印输出的新方法,或者,与其直接尝试写入线(角色)
,不如尝试记录角色的一些特定属性(我想举个例子,但您的所有财产都是私有的,因此无法按原样以这种方式访问)
重写ToString()
如下所示:
public override string ToString()
{
return $"{_type} (str: {_strength})";
}
您必须在Game
类中实现ToString()
方法,就像这样
private string\u类型;
私人综合实力;
公共游戏(字符串图表类型,整数强度)
{
这个._type=charType;
这个。_力量=力量;
}
公共重写字符串ToString()
{
返回$“{u-type}{u-strength}”;
}
默认情况下,Console.Writeline
使用对象的ToString()
方法,在您的情况下,Project.Game
会返回对象的类型
public override string ToString()
{
return $"{_type} (str: {_strength})";
}