2013-06-03 21 views
8

デルファイオンラインマニュアルがアプリケーションコードでClassTypeを使用しないでください。

は、「アプリケーションコードでClassTypeを使用しないでください」と言います。

しかし、クラスの種類が必要な場所はたくさんあります。たとえば、プログラムがSystem.Contnrsクラスを使用する場合。 TClassList、私はIndexOf()のパラメータで渡すオブジェクトのClassTypeが必要です。

ClassTypeドキュメントのこの推奨事項の背景にある理由は何ですか?オブジェクトのクラスがTStringListであれば条件が唯一の真と評価されます

if obj.ClassType = TStringList then 
    .... 

答えて

17

このアドバイスが与えられている理由を最も明白な理由は、このようなコードを書きたいプログラマのためのものです。しかし、非常に一般的には、TStringListおよび任意の子孫の条件付きコードを実行することをお勧めします。その場合、あなたが書いて:あなたは、インスタンスが何であるかをクラス知る必要がある場合

if obj is TStringList then 
    .... 

、その後ClassTypeはあなたが使うべきものです。 TClassListインスタンスにクラスのリストを保持する場合は、ClassTypeを使用してインスタンスのメタクラスを自由に取得してください。