如何查找对象是来自类而不是超类?

时间:2009-02-03 14:24:45

标签: c# class object

在C#中,如何找到某个对象是某个类的实例而不是该类的超类?

“is”将返回true,即使该对象实际上来自超类。

5 个答案:

答案 0 :(得分:14)

typeof(SpecifiedClass) == obj.GetType()

答案 1 :(得分:3)

您可以将对象的类型与您要查找的类的类型进行比较:

class A { }
class B : A { }

A a = new A();
if(a.GetType() == typeof(A)) // returns true
{
}

A b = new B();
if(b.GetType() == typeof(A)) // returns false
{
}

答案 2 :(得分:2)

不幸的是,这在C#中是不可能的,因为C#不支持多重继承。给这个继承树:

GrandParent
  Parent
   Child

Child将始终是继承链中它上面的每个类型的实例。

答案 3 :(得分:1)

您可能希望在Type类上查看几个方法: Type.IsInstaceOf 和 Type.IsSubclassOf

您可以传入您正在寻找的课程并获取所需的信息。

答案 4 :(得分:0)

return

这对我有用