C#:测试超类实例中的类而不是子类

时间:2011-04-07 19:34:41

标签: c# inheritance

我有一个类,它有一堆继承自它的子类。我如何测试一个对象是否是该超类的实例,而不是任何派生类的实例?

示例:

我有一个Vehicle类,它有几个继承它的类,如汽车,摩托车,自行车,卡车等。

假设这一点,我如何测试车辆对象是否真的属于类车辆,而不是汽车或自行车? (因为Car和Bicycle在这种情况下也是Vehicle类的一个实例。)

3 个答案:

答案 0 :(得分:13)

if (theObject.GetType() == typeof(Vehicle))
{
   // it's really a Vehicle instance
}

答案 1 :(得分:2)

使用Object.GetType()确定对象的具体类型。

Vehicle v = GetVehicle();

if(v.GetType() == typeof(Vehicle))
{
}

答案 2 :(得分:1)

您可以使用:

bool isSuper = instance.GetType() == typeof(Vehicle);