次の方法で共有


汎用データ型としてのオブジェクト型 (Object)

更新 : 2007 年 11 月

オブジェクト型 (Object)は、.NET Framework および Visual Basic におけるルート型です。つまり、他のすべてのデータ型およびオブジェクト型は、直接的または最終的にこの型から派生しています。また、他のすべての基本型および複合型のデータ型は、オブジェクト型 (Object) に変換できます。

柔軟な型指定

Object は、汎用データ型として使用できます。これは、柔軟な型指定と呼ばれます。この柔軟性の例を次に示します。

Dim v As Object
v = "17"
' v contains the 2-character String value "17".
v = v - 15
' v now contains the Integer value 2.
v = "H" & v
' v now contains the 2-character String value "H2".

Object 変数に対する演算は、変数に含まれるデータの種類を特に考慮しなくても実行できますが、次の点に注意する必要があります。

  • Object に対して算術演算や算術関数を実行する場合は、その変数に数値データが保持されている必要があります。そうでないと、ランタイム エラーが発生します。

  • 文字列を連結する場合は、+ 演算子ではなく & 演算子を使用します。+ 演算子がどのような場合にオペランドの加算として機能し、どのような場合にオペランドどうしの連結として機能するかは、非常に複雑な規則によって決定されています。また、+ 演算子では、場合によっては型チェックや変換を実行する必要があるためパフォーマンスが低下します。

オブジェクト変数のデータ型を変更する

Object 変数はすべての型のデータを受け入れることができますが、変数自体を異なるデータ型に変更することはできません。ただし、オブジェクト型 (Object) の変数からオブジェクト型 (Object) の変数の配列へは再次元設定できます。ReDim ステートメント (Visual Basic) の有効な使用例と無効な使用例を次に示します。

' The following statement declares a single Object.
Dim someObj As Object
' The following reallocation is valid only for Object.
ReDim someObj(8)
' The following statement attempts an INVALID change of data type.
ReDim someObj(8) As Double

最初の ReDim ステートメントでは、someObj を Object 型の配列に変更します。これが有効なのは、オブジェクト型 (Object) の場合だけです。2 番目の ReDim ステートメントでは、異なるデータ型が使用されているために無効です。この例で意図されている結果を得るには、もう 1 つ別の配列を使用します。次に例を示します。

' First allocate a separate array.
Dim someArray(8) As Double
' Then assign the new array to the Object variable.
someObj = someArray

構造体の代わりとしてのオブジェクト型 (Object)

オブジェクト型 (Object) はさまざまな型のデータを格納できるため、構造体を使用する多くの状況ではオブジェクト型 (Object) の配列を使用できます。オブジェクト型 (Object) の配列は、各要素に格納するデータ型をいつでも変更したり、配列を動的に作成して必要に応じてサイズを変更したりできるため、構造体よりも多少柔軟性が高くなります。ただし、Object 配列は、同等の構造体に比べて多くのメモリが必要となり、パフォーマンスも低下します。

参照

概念

Visual Basic での型宣言を省略したプログラミング

暗黙の宣言と明示的宣言

Visual Basic における型チェック

データ型の有効な使用方法

オブジェクト変数の宣言

オブジェクト変数の代入

オブジェクト変数の値

参照

データ型の概要 (Visual Basic)

データ型変換関数

その他の技術情報

Visual Basic における型変換