我想知道从类引用创建的对象是特定类的实例还是它的任何后代。
换句话说,我想要一个布尔表达式,例如
var is TMyClass
但是其中 var 被替换为涉及类引用变量的表达式。这听起来很容易,但让我完全难住了。
我可以创建一个实例 var := classRefVar.Create,对其进行测试,然后销毁它,但这是一个巨大的开销。
奇怪的是,编译器不会让我有
classRefVar(nil) is TMyClass
但对看似相同但无用的句法感到满意
TMyClass(nil) is TMyClass
显然,表达式
classRefVar = TMyClass
不好,因为 classRefVar 可能引用 TMyClass 的后代。
当我看到答案时,我期待着踢自己......