■ VB6にてクラスの利用

クラスモジュールを追加します。
クラスモジュールには次の様に書き込みました
Public data As String

Public Function test(str As String) As String
    test = data + str
End Function

Private Sub Class_Initialize()
    MsgBox ("コンストラクタ")
End Sub

Private Sub Class_Terminate()
    MsgBox ("デストラクタ")
End Sub

▼ クラスを使用するには、クラス変数を作り New にて実体を作成する必要があります。
Dim a As Class1
Set a = New Class1

クラス内で Public で指定した変数やメソッドは外部からアクセスできます。
そのため data と test は外部からアクセスできます。
Dim a As Class1
Set a = New Class1
a.data = "test"
Dim str As String
str = a.test("1")

▼ Class_Initialize はクラス作成時に、Class_Terminate はクラス破棄時に呼ばれます。
クラス作成時とは、New した時、クラス破棄時とは、参照が全て無くなった時になります。
クラスを破棄してデストラクタを呼び出すには、クラスの参照を全て破棄する必要があります。

変数 a に Nothing を代入して参照を破棄するとデストラクタが呼ばれる
Set a = Nothing

この場合には、変数 b にも参照されています a を破棄しても参照は残るのでデストラクタは呼ばれません。
Set b = a
Set a = Nothing

変数が自動変数(関数内で作成して関数が終わったら破棄される)の場合には、関数を抜けた時点で参照が無くなるため、デストラクタが呼ばれる。
関数が終了 End Sub した時点でデストラクタが呼ばれます。
Private Sub Form_Load()
    Dim a As Class1
    Set a = New Class1
End Sub

▼ END命令の扱い
プログラムを終了する END 命令は問答無用で終了する命令なのでデストラクタは呼ばれません。
Dim a As Class1
Set a = New Class1
End
Set a = Nothing

ENDで終了する場合には 事前に参照を全て破棄するとデストラクタが呼ばれます。
Dim a As Class1
Set a = New Class1
Set a = Nothing
End


▲トップページ > Visual BASIC と C#