我试图在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#中,所以我很抱歉我的代码中的任何愚蠢元素。
答案 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);