我有一个列表,我正在读取数据。我检查了如何输出列表但是对其他人有用的东西对我不起作用。我注意到我看到的所有例子都没有像我一样在列表中使用过类,我找不到这样的例子。
这是我的代码:
private static void AddCar(Vechicle _Motor, List<Vechicle> vehicles)
{
//int number = 1;
Console.Clear();
Vechicle v = new Vechicle();
Console.Write("/////////////////////ADDING CAR DETAILS\\\\\\\\\\\\\\\\\\\\\\\\");
Console.Write("\n\nEnter Make: ");
v.Make = Console.ReadLine();
Console.Write("\n\nEnter Model: ");
v.Model = Console.ReadLine();
Console.Write("\n\nEnter Year: ");
v.Year = Console.ReadLine();
vehicles.Add(v);
Console.Clear();
foreach (Vechicle value in vehicles)
{
Console.WriteLine(vehicles);
}
}
这是输出:
感谢您的帮助!
我现在改变了:
foreach (Vechicle value in vehicles)
{
Console.WriteLine(vehicles);
}
TO:
foreach (Vechicle value in vehicles)
{
Console.WriteLine(value);
}
正如评论中所建议的,但现在我明白了:
答案 0 :(得分:6)
默认情况下,Console.WriteLine
会在您传递的参数上调用ToString
- 因为您正在传递集合,所以它使用ToString
的默认实现,它只打印类名。
如果Vehicle
以合理的输出(see other answer for implementation)覆盖.ToString
而不是简单地将value
传递给Console.WriteLine
:
foreach (var value in vehicles)
{
Console.WriteLine(value);
}
或直接打印您需要的内容:
foreach (var value in vehicles)
{
Console.WriteLine("Make: {0}, model:{1}", value.Make, value.Model);
}
对于.ToString()
,请考虑使用String.Format
,因为如果您需要具有固定的非数字格式或非默认数字格式的内容,它将提供比+
更多的格式选项:
public class Vehicles
{
....
public override string ToString()
{
return String.Format("Make: {0}, model:{1}", Make, Model);
}
}
答案 1 :(得分:3)
您需要在车辆类中重载ToString方法,或者创建一个返回make model和year字符串的方法。
一些示例代码。
public class Vehicles
{
public string Make;
public string Model;
public string Year;
public override string ToString()
{
return Make + " " + Model + " " + Year;
}
}
每当您调用Vehicles.ToString()时,都会覆盖ToString方法,它将返回make model year。