我有一个CARS列表,我使用覆盖的ToString方法在列表框中显示列表。 我已经为汽车模型派生了类(例如掀背车),我需要显示有关派生汽车模型的更多信息,而不会丢失基本的tostring方法。
如何在一个列表框和"掀背车"中显示CARS列表?不同列表框中的详细信息。
如果我覆盖Models类中的ToString,它会覆盖我试图为CARS显示的细节。
由于 对不起,C# 我的汽车方法是
public override string ToString()
{
return Name + " [" + this.GetType().Name.ToString() + "] called " + Type;
}
但是当我创建派生类时,我有时想要使用派生类中的ToString,而不是总是来自基类的ToString。
答案 0 :(得分:0)
简短的回答是,你不能做你所描述的事情。一旦您在派生类中重写了一个虚方法,就无法从派生类访问基类中的版本。
我会考虑在派生类中添加一个新方法或属性,以检索特殊于两厢车的信息。
class Car
{
public override string ToString()
{
return "some basic info"; // Whatever you want
}
}
class Hatchback : Car
{
public string HatchbackInfo
{
get{return "some hatchback info";} // Return some details only hatchbacks have
}
}
当消耗可能实际上是掀背车的Car对象集合时,您可以检查对象的类型并采取相应的行动:
public void DoSomeStuffWithCars(List<Car> cars)
{
foreach(Car c in cars)
{
Hatchback h = c as Hatchback.
if(h != null) // alternatively you can use the 'is' operator
{
// do some hatchback stuff with h.HatchbackInfo
}
// logic here applies to all cars
}
}