列表输出不正确

COY*_*OYG 0 c# class list member

我有一个列表,我正在读取数据.我检查了如何输出列表但是对其他人有用的东西对我不起作用.我注意到我看到的所有例子都没有像我一样在列表中使用过类,我找不到这样的例子.

这是我的代码:

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);
          }


      }
Run Code Online (Sandbox Code Playgroud)

这是输出:

产量

谢谢你的帮助!

我现在改变了:

foreach (Vechicle value in vehicles)
          {
              Console.WriteLine(vehicles);
          }
Run Code Online (Sandbox Code Playgroud)

至:

foreach (Vechicle value in vehicles)
          {
              Console.WriteLine(value);
          }
Run Code Online (Sandbox Code Playgroud)

正如评论中所建议的,但现在我明白了:

结果

Ale*_*kov 6

默认情况下,Console.WriteLine调用ToString你传递的参数是 - 因为你传递集合它使用的默认实现ToString只是打印类名.

如果Vehicle覆盖.ToString了一些合理的输出(请参阅其他实现答案)而不是简单地传递valueConsole.WriteLine:

 foreach (var value in vehicles)
 {
     Console.WriteLine(value);
 }
Run Code Online (Sandbox Code Playgroud)

或直接打印您需要的东西:

    foreach (var value in vehicles)
    {
        Console.WriteLine("Make: {0}, model:{1}", value.Make, value.Model);
    }
Run Code Online (Sandbox Code Playgroud)

对于.ToString()考虑使用String.Format,因为它会给予超过格式化选项+,如果你想与固定withd或非默认的数字格式的内容:

 public class Vehicles
 { 
    ....
    public override string ToString() 
    { 
       return String.Format("Make: {0}, model:{1}", Make, Model);
    }
 }
Run Code Online (Sandbox Code Playgroud)