C#:如何检查两个实例的类型

时间:2010-11-04 04:44:42

标签: c# inheritance types

我无法为此获得正确的语法。

假设我有两个实例化对象,obj1和obj2。

现在,我想检查两件事:

1)obj1的类型是obj2类型的子类

2)obj1的类型与obj2的类型是相同

我非常确定我只能通过

来实现1)
obj1.GetType().IsSubclassOf(obj2.GetType())

但如果obj1和obj2属于同一类型,上面的内容会返回true吗?

3 个答案:

答案 0 :(得分:4)

MSDN表示,如果obj1和obj2属于同一个班级http://msdn.microsoft.com/en-us/library/system.type.issubclassof.aspx

,它将返回false

你可以做到

obj1.GetType().IsSubclassOf(obj2.GetType()) || obj1.GetType() == (obj2.GetType()

答案 1 :(得分:3)

如有疑问,请咨询the documentation(强调我的):

  

返回值true如果Type参数代表的c和当前Type代表类,并且代表的类别为当前Type派生自c所代表的类;否则,false

     

如果false且当前c代表同一类,此方法也会返回Type

如果您想检查两种类型是否相同,您可以只比较他们的Type

obj1.GetType() == obj2.GetType()

答案 2 :(得分:0)

obj2.GetType().IsAssignableFrom(obj1.GetType())