8

clsMyClassオブジェクトをメンバー変数として持つクラスモジュールがあるとします。以下にリストされているのは、この非常に単純なクラスの2つの完全な実装です。

実装1:

Dim oObj As New clsObject

実装2:

Dim oObj As clsObject

Private Sub Class_Initialize()
    Set oObj = New clsObject
End Sub

Private Sub Class_Terminate()
    Set oObj = Nothing
End Sub

これら2つの間に機能的な違いはありますか?特に、寿命はoObj同じですか?

4

3 に答える 3

5

実装 1 では、clsObject は使用されるまでインスタンス化されません。使用されない場合、clsObject.Class_Initialize イベントは発生しません。

実装 2 では、clsMyClass がインスタンス化されると同時に、clsObject インスタンスが作成されます。clsMyClass が作成されると、clsObject.Class_Initialize が常に実行されます。

于 2008-09-17T19:11:36.813 に答える
0

実装1で、宣言がサブではなくクラス内にある場合、はい、スコープは両方の例で同じです。

于 2008-09-17T18:56:42.620 に答える
0

オブジェクト変数は、ガベージ コレクションによってオブジェクトへの参照がなくなったと判断されるたびに破棄されます。したがって、2 つの例では、clsObject のスコープが同じであると仮定すると、オブジェクトが破棄されるタイミングに違いはありません。

于 2008-09-17T19:09:34.960 に答える