我有一个基类和三个从该类派生的子类型(参见下面的示例).
public abstract class Vehicle
{
string name;
string color;
}
public class Car : Vehicle
{
int nrofwheels;
}
public class Train : Vehicle
{
int nrofrailcars;
}
Run Code Online (Sandbox Code Playgroud)
为了使我的方法之一尽可能通用,我想将基类型作为参数传递,然后检测hat子类型,它在我的方法中,如下所示:
public static void main(string[] args)
{
public Car c = new Car();
public Train t = new Train();
public CheckType(Vehicle v)
{
if(v.GetType()==typeof(Car)) Console.Write(v.nrofwheels);
else Console.Write(v.nrofrailcars);
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,为什么以及我还能尝试什么?
[编辑]我知道班级的例子并不完整,但我认为这不是必要的.
您应该重构该类并将CheckType移动到Vehicle类并在子类中重写它.并且CheckType名称不是最好的,因为该方法返回了wheel/rails的数量,所以没有任何意义.
像这样的东西:
public abstract class Vehicle
{
string name;
string color;
public abstract int CheckType();
}
public class Car : Vehicle
{
int nrofwheels;
public override int CheckType()
{
return this.nrofwheels;
}
}
public class Train : Vehicle
{
int nrofrailcars;
public override int CheckType()
{
return this.nrofrailcars;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |