C# 列表输出不正确

C# 列表输出不正确,c#,list,class,member,C#,List,Class,Member,我有一个正在读取数据的列表。我检查了如何输出列表,但对其他人有效的内容对我无效。我注意到我所看到的例子中没有一个像我这样在列表中使用类,我也找不到这样的例子 这是我的密码: private static void AddCar(Vechicle _Motor, List<Vechicle> vehicles) { //int number = 1; Console.Clear(); Vechicle v = n

我有一个正在读取数据的列表。我检查了如何输出列表,但对其他人有效的内容对我无效。我注意到我所看到的例子中没有一个像我这样在列表中使用类,我也找不到这样的例子

这是我的密码:

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


      }
致:

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

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

如果车辆通过一些合理的输出超越.ToString,而不是简单地将值传递给Console.WriteLine:

或者直接打印您需要的任何内容:

    foreach (var value in vehicles)
    {
        Console.WriteLine("Make: {0}, model:{1}", value.Make, value.Model);
    }
<> > totoString考虑使用String。Frase:如果您想要固定或非默认数字格式:

,它将提供比+更多的格式化选项。
 public class Vehicles
 { 
    ....
    public override string ToString() 
    { 
       return String.Format("Make: {0}, model:{1}", Make, Model);
    }
 }

您需要在vehicle类中重载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方法。ToString方法将返回make model year。

看起来也有输入错误。Console.WriteLinevehicles应为Console。WriteLinevalue@AlexeiLevenkov我希望读入make、model和year的输出,然后读入列表作为输出。有没有可能找到那个复制品的链接?不,那根本不起作用。我看到的所有其他示例的参数中都有“in”后面的变量。这些示例当时是错误的@p、 s.w.g是正确的…不,它应该是Console.WriteLinevalue。这是C中foreach的参考:啊,显然是另一个输入错误,您将变量vaule命名为not value。谢谢,我做了您建议的更改,但仍然得到了错误的输出。然后它使用了你的建议和另一个答案,它起了作用。@Deathismy朋友,如果车辆超驰,你需要通过。尝试一些合理的输出:这可能是你在帖子中所说的,但我在这种形式下无法理解。@COYG我甚至没有注意到那句话。我只是在vehicles{Console.WriteLinevalue;}中引用foreach var值,因为您使用vehicles代替值。@COYG-是。。。这句话有点别扭:改写后可能更可读。没问题,很乐意帮忙。
    foreach (var value in vehicles)
    {
        Console.WriteLine("Make: {0}, model:{1}", value.Make, value.Model);
    }
 public class Vehicles
 { 
    ....
    public override string ToString() 
    { 
       return String.Format("Make: {0}, model:{1}", Make, Model);
    }
 }
    public class Vehicles
    {
        public string Make;
        public string Model;
        public string Year;

        public override string ToString()
        {
            return Make + " " + Model + " " + Year;
        }
    }