C# 在c中显示列表中的类数据#

C# 在c中显示列表中的类数据#,c#,C#,我试图在C#中显示列表中的类数据 以下是我的类定义: class Vehicle { public string brand; public string model; } class Car : Vehicle { double trunk_capacity; int doors_number; int vmax; } 下面是我添加car元

我试图在C#中显示列表中的类数据

以下是我的类定义:

    class Vehicle
    {
        public string brand;
        public string model;
    }

    class Car : Vehicle
    {
        double trunk_capacity;            
        int doors_number;
        int vmax;
    }
下面是我添加car元素的代码:

    public static void AddCar(List<object> avaliable_cars)
    {
        int x = 0;

        Console.WriteLine("Adding new car:");
        Console.WriteLine("1 - Car");
        Console.WriteLine("2 - Sport Car");
        Console.WriteLine("3 - Truck");

        x = int.Parse(Console.ReadLine());

        switch (x)
        {
            case 1: 
            {
                Console.WriteLine("Adding new Car.");

                avaliable_cars.Add(new Car());
                Console.WriteLine("Brand");
                string brand_tmp = Console.ReadLine();
                Console.WriteLine("Model");
                string model_tmp = Console.ReadLine();
                avaliable_cars.Add(new Car()
                {
                    brand = brand_tmp,
                    model = model_tmp
                });

            } break;
        }

   }
我不工作。此外,我希望一次访问一个元素-例如,我希望显示列表中第一辆车的品牌。我该怎么做


PS我是C#的初学者,所以我为代码中的愚蠢元素感到抱歉。

一种干净的方法是重写ToString()

然后你可以简单地使用

Console.WriteLine(car);

您需要将对象car强制转换为car或Vehicle类型,然后进行打印

foreach (object car in avaliable_cars)
{
  Console.WriteLine(((Vehicle)car).brand);
}

一个好方法是使用泛型。您可以将您的方法专门化为:

static void AddCar<T>(List<T> avaliable_cars) 
       where T : Car ,new()
    {
        int x = 0;

        Console.WriteLine("Adding new car:");
        Console.WriteLine("1 - Car");
        Console.WriteLine("2 - Sport Car");
        Console.WriteLine("3 - Truck");

        x = int.Parse(Console.ReadLine());

        switch (x)
        {
            case 1: 
            {
                Console.WriteLine("Adding new Car.");

                avaliable_cars.Add(new T());
                Console.WriteLine("Brand");
                string brand_tmp = Console.ReadLine();
                Console.WriteLine("Model");
                string model_tmp = Console.ReadLine();
                avaliable_cars.Add(new T()
                {
                    brand = brand_tmp,
                    model = model_tmp
                });

            } break;
        }

   }

希望有帮助。

我们可以简单地使用String.Join或foreach

       List<string> numbers = new List<string>
                    { "One", "Two", "Three","Four","Five"};

        Console.WriteLine(String.Join(", ", numbers));


List<string> strings = new List<string> { "a", "b", "c" };

strings.ForEach(Console.WriteLine);
列表编号=新列表
{“一”、“二”、“三”、“四”、“五”};
Console.WriteLine(String.Join(“,”,number));
列表字符串=新列表{“a”、“b”、“c”};
strings.ForEach(Console.WriteLine);

当然可以,但对于车辆的任何其他子类,或车辆本身的实例,这将失败。代码很脆弱。同意在这种情况下使用基类更好,但你的答案可能是正确的。我认为你不需要将汽车转换为汽车。你不需要,但你可以,因为汽车继承了汽车的品牌,而且由于列表中包含对象,将汽车转换为汽车更安全,但两者都可以。
static void AddCar<T>(List<T> avaliable_cars) 
       where T : Car ,new()
    {
        int x = 0;

        Console.WriteLine("Adding new car:");
        Console.WriteLine("1 - Car");
        Console.WriteLine("2 - Sport Car");
        Console.WriteLine("3 - Truck");

        x = int.Parse(Console.ReadLine());

        switch (x)
        {
            case 1: 
            {
                Console.WriteLine("Adding new Car.");

                avaliable_cars.Add(new T());
                Console.WriteLine("Brand");
                string brand_tmp = Console.ReadLine();
                Console.WriteLine("Model");
                string model_tmp = Console.ReadLine();
                avaliable_cars.Add(new T()
                {
                    brand = brand_tmp,
                    model = model_tmp
                });

            } break;
        }

   }
foreach (T car in avaliable_cars)
{
    Console.WriteLine(car);
}
       List<string> numbers = new List<string>
                    { "One", "Two", "Three","Four","Five"};

        Console.WriteLine(String.Join(", ", numbers));


List<string> strings = new List<string> { "a", "b", "c" };

strings.ForEach(Console.WriteLine);