System.Variant
Delphi
type Variant = { built-in type };
C++
class RTL_DELPHIRETURN Variant: public TVarData
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
type class |
public | System.pas sysvari.h |
System | System |
説明
実行時に型を変更することができる変数のために使用されます。
Variant 型は、実行時に型を変更することができる変数のために使用されます。 バリアントを使用すると、柔軟性が向上しますが通常の変数よりもメモリを多く使用します。バリアントの操作は、静的にバインドした型よりも遅くなります。 さらに、通常の変数であればコンパイル時に発見できるような間違いでも、バリアントに対する不正な操作は多くの場合実行時エラーを発生させます。 カスタムのバリアント型を作成することもできます。
デフォルトでは、Variant 変数は、レコード、集合、静的配列、ファイル、クラス、クラス参照、およびポインタを除くすべての型の値を保持できます。 言い換えると、バリアントは、構造化型とポインタ以外のすべてを保持できます。 バリアントはインターフェイスを保持できます。インターフェイスのメソッドとプロパティには、バリアントからアクセスできます バリアントは、動的配列、およびバリアント配列と呼ばれる特殊な静的配列を保持できます。 バリアントは、式や代入文で、他のバリアントや、Integer、Real、string、および Boolean の各値と混在させて使うことができます。コンパイラは、自動的に型変換を行います。
文字列を含むバリアントは、インデックス付けできません。
任意の値を保持できるように Variant 型を拡張した、カスタム バリアントを定義できます。 たとえば、インデックス付けできるバリアント文字列型、あるいは特定のクラス参照、レコード型、または静的配列を保持するバリアント文字列型を定義できます。 カスタム バリアント型は、TCustomVariantType クラスの下位クラスを作成することによって定義します。
32 ビット プラットフォームでは、Variant はメモリの 16 バイトを占めます。64 ビット プラットフォームでは、Variant は 24 バイト レコードです。バリアント レコードは、型コードによって指定された型の、型コードと値または値へのポインタで構成されます。 「バリアント型の内部表現」を参照してください。 すべてのバリアントは、作成時に特別な値 Unassigned で初期化されます。 特別な値 Null は、不明なデータまたは欠落したデータを示します。