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

时间:2015-03-22 16:27:57

标签: c#

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

这是我的班级定义:

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

    class Car : Vehicle
    {
        double trunk_capacity;            
        int doors_number;
        int vmax;
    }

这是我的代码,其中我添加了car element:

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

   }

我不知道如何显示此列表中的数据。

我试图这样做

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

我不行。此外,我想一次访问一个元素 - 例如,我想在列表中显示第一辆汽车的品牌。我怎么能这样做?

PS Im初学者在C#中,所以我很抱歉我的代码中的任何愚蠢元素。

4 个答案:

答案 0 :(得分:2)

这样做的一个简洁方法是覆盖ToString()

class Vehicle
{
    public string brand;
    public string model;
    public override ToString()
    {
        return "Brand: " + brand + ", Model: " + model;
    }
}

class Car : Vehicle
{
    double trunk_capacity;            
    int doors_number;
    int vmax;
    public override ToString()
    {
        return base.ToString() +
           "trunk_capacity: " + trunk_capacity; // etc.
    }
}

然后你可以简单地使用

Console.WriteLine(car);

答案 1 :(得分:2)

您需要将对象车投射到Car或Vehicle类型,然后打印。

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

答案 2 :(得分:1)

一个不错的方法是使用泛型。您可以像这样专门化您的方法AddCar:

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

   }

要打印数据,您只需使用T代替对象:

foreach (T car in avaliable_cars)
{
    Console.WriteLine(car);
}

希望它有所帮助。

答案 3 :(得分:0)

我们可以简单地使用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);