如何比较声明为类型的两个对象的类型。
我想知道两个对象是否属于同一类型或来自同一基类。
任何帮助表示赞赏。
e.g.
private bool AreSame(Type a, Type b) {
}
Say a
and b
是两个对象。如果你想看看是否a
and b
位于相同的继承层次结构中,然后使用Type.IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx:
var t = a.GetType();
var u = b.GetType();
if (t.IsAssignableFrom(u) || u.IsAssignableFrom(t)) {
// x.IsAssignableFrom(y) returns true if:
// (1) x and y are the same type
// (2) x and y are in the same inheritance hierarchy
// (3) y is implemented by x
// (4) y is a generic type parameter and one of its constraints is x
}
如果您想检查一个是否是另一个的基类,请尝试Type.IsSubclassOf http://msdn.microsoft.com/en-us/library/system.type.issubclassof.aspx.
如果您知道具体的基类,那么只需使用is
关键词:
if (a is T && b is T) {
// Objects are both of type T.
}
否则,您将必须直接遍历继承层次结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)