私は、このようなVB6クラスにはデストラクタがありますか?クリーンアップのアレイのようなものを行うには
Set MyObject = Nothing
などの文を実行し(私はデストラクタとして使用することができますすなわち)が呼び出されたクラス内の特定の機能があり、データベースから切断し、など?
私は、このようなVB6クラスにはデストラクタがありますか?クリーンアップのアレイのようなものを行うには
Set MyObject = Nothing
などの文を実行し(私はデストラクタとして使用することができますすなわち)が呼び出されたクラス内の特定の機能があり、データベースから切断し、など?
を処理するためにClass_Terminate
を使用することができ、コンストラクタは、デストラクタでもあります:
Sub Class_Terminate
... ' Put your destructor code here '
End Sub
この方法は、できるだけ早く実行されますこのオブジェクトの参照カウントはゼロになります。つまり、このオブジェクトを参照するすべての変数が有効範囲外になった場合、または他のものに設定されている場合(例えば、 Nothing
)。したがってSet MyObject = Nothing
は、MyObject
がこのオブジェクトを参照する最後の変数である場合にのみ、デストラクタを呼び出します。
No. VB6は、プログラマが明示的に何かを書くための仕組みを提供していません。プログラマができることはSet MyObject = Nothing
であり、VBは残りの部分を処理します。
UPDATE:
一つはClass_Initialize
と同様に、この
が間違っています。 'Class_Terminate'メソッドは、オブジェクトがスコープから外れるか' Nothing'に設定されたときに起動されます。 –
申し訳ありませんスタンドを修正しました。 – Kangkan
+1:これはしばらく私を悩ましていました。 o) –
私がVB6を使いたいのと同じくらい、これには欠点があります。たとえば、プログラムがクラッシュした場合(未処理の例外、Endステートメントが実行されたなど)、ファイルのロックを解除したり、最終バッファをフラッシュしたりしないでください。 – Bob77
ありがとう、@Heinziと@Bob Riemersma。 –