我有一些继承类,例如A
和B: A
。
我找到了一种方法来运行时进行检查,我正在处理哪个类:
A a = new A;
if( some condition )
a = new B;
if (a.classinfo.name == "a.b")
writeln("That previous condition was met");
但是有更好的方法吗?现在,我真的对typeid
typeof
和is
感到困惑。
答案 0 :(得分:2)
如果您需要知道它是该类型还是它的任何子类型,这可能是在这些情况下的最佳计划:
(cast(B)a) !is null
如果您需要知道一个罕见的确切类型,可以使用:
a.classinfo is B.classinfo