D 在运行时检查对象的类
我有一些继承类,比如D 在运行时检查对象的类,d,D,我有一些继承类,比如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"); 然而,还有更好的办法吗?我现在真的对typeidtypeof和is感到困惑,如果您需要知道它是那种类型还是它的任何子类型,在这些情况下,哪种可能是最好的计划: (c
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
感到困惑,如果您需要知道它是那种类型还是它的任何子类型,在这些情况下,哪种可能是最好的计划:
(cast(B)a) !is null
如果您需要知道确切的类型(这种情况很少见),您可以使用:
a.classinfo is B.classinfo