4

クラス参照から作成されるオブジェクトが特定のクラスのインスタンスなのか、その子孫のインスタンスなのかを知りたいのですが。

つまり、次のようなブール式が必要です。

var is TMyClass

ただし、varは、クラス参照変数を含む式に置き換えられます。簡単そうに聞こえますが、私は完全に困惑しています。

インスタンスvar:= classRefVar.Createを作成し、テストしてから破棄することもできますが、それは大きなオーバーヘッドです。

奇妙なことに、コンパイラは私に

classRefVar(nil) is TMyClass

構文的には同等に見えるが役に立たないことに満足している

TMyClass(nil) is TMyClass

明らかに、式

classRefVar = TMyClass

classRefVarがTMyClassの子孫を参照している可能性があるため、これは適切ではありません。

答えを見たら自分を蹴るつもりです...

4

1 に答える 1

7

簡単:

ClassRefVar.InheritsFrom(TMyClass)
于 2011-03-18T13:51:27.667 に答える