d获取类名
原文
 取B的类名:
interface A {
    string text();
}
class B : A {
    override string text() {
        return ": It's ok!";
    }
}
void main() {
    A[] a = cast(A[]) new B[3];
    B b = new B();
    fill(a, b);
    foreach (val ; a) {
        writeln(typeof(val).stringof, val.text());
    }
}
 
可用val.classinfo.name.
 如果转换为Object并使用classinfo.name,则会得到B.
//前面略...
void main() {
    A[] a = cast(A[]) new B[3];
    B b = new B();
    fill(a, b);
    foreach (val ; a) {
        writeln((cast(Object)val).classinfo.name, val.text()); // 技巧在此.
    }
}
                
                
            
        
浙公网安备 33010602011771号