检查对象的实际类型

时间:2014-05-14 06:41:59

标签: c#

我有:

class A class B : A class C : B class D : B

我有一个清单

存储C和D的实际对象。

如何检查List中的对象是否为B的子类型?

目前,我正在做item.GetType() == typeof(C) || item.GetType() == typeof(D)

这有效,但如果我有两个以上从B继承的类怎么办?把所有这些写下来似乎是多余的。有没有办法检查对象是否是B的子类型?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用is关键字。

if(item is B)

参考:http://msdn.microsoft.com/en-us/library/scekt9xw.aspx

答案 1 :(得分:0)

你考虑过使用演员阵容吗? 如果您不知道它是什么,请检查this

  

如果涉及基类和派生类型的强制转换操作,则存在   抛出异常的风险。以前测试兼容性   实际上执行了一次演员,C#提供了两个允许的运算符   安全铸造而不会造成任何例外。这两个运营商是:

     

'Is'运算符用于检查从一种引用类型到另一种引用类型的成功转换并确定对象的类型   铸造它。
      'As'运算符用于获取投射值,如果投射可以成功并因此更有效。