在运行时检查 class 个对象

Check class of object at runtime

我有一些继承 classes,比如 AB: A。 我找到了一种方法来检查 运行时 ,我正在处理 class:

A a = new A;
if( some condition )
  a = new B;

if (a.classinfo.name == "a.b")
  writeln("That previous condition was met");

但是有没有更好的方法呢?我现在真的很困惑 typeid typeofis.

如果您需要知道它是该类型还是它的任何子类型,这可能是这些情况下的最佳方案:

(cast(B)a) !is null

如果你需要知道一个确切的类型,这很少见,你可以使用:

a.classinfo is B.classinfo