【问题标题】:C#: How to check types of two instancesC#:如何检查两个实例的类型
【发布时间】:2011-05-04 21:13:24
【问题描述】:

我无法获得正确的语法。

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

现在,我想检查两件事:

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

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

我很确定我可以通过这样做来实现 1)

obj1.GetType().IsSubclassOf(obj2.GetType())

但是如果 obj1 和 obj2 是同一类型,上面会返回 true 吗?

【问题讨论】:

    标签: c# inheritance types


    【解决方案1】:
    obj2.GetType().IsAssignableFrom(obj1.GetType())
    

    【讨论】:

      【解决方案2】:

      MSDN 说如果 obj1 和 obj2 是同一个类,它将返回 false http://msdn.microsoft.com/en-us/library/system.type.issubclassof.aspx

      你可以这样做

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

      【讨论】:

        【解决方案3】:

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

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

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

        如果你想检查两种类型是否相同,你可以比较他们的Types:

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

        【讨论】:

        • 噢!应该查一下。即使我这样做了,我也会有另一个关于测试类型相等性的问题,你已经在这个回复中为我回答了这个问题。谢谢!
        猜你喜欢
        • 2020-05-20
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多