C# 在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元
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);